[R] Problème de navigation dans Excel

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
zozisson
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 30 oct. 2008 11:38
Status : Hors ligne

[R] Problème de navigation dans Excel

#1

Message par zozisson »

Bonjour,

Je cherche à créer une macro sur AutoIt qui doit, entre autres, ouvrir des fichiers .csv (données) et .xlsm (classeur Excel gérant des macros VB) avec Excel2007, puis qui doit naviguer entre les différents fichiers ouverts pour y effectuer diverses actions.
J'utilise ExcelCOM_UDF.au3 pour ouvrir les fichiers, mais je n'arrive pas à naviguer à l'intérieur même d'Excel.
Existe-t-il une fonction le permettant ?

Merci.
Avatar du membre
zozisson
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 30 oct. 2008 11:38
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#2

Message par zozisson »

Vraisemblablement AutoIt ne fait pas la différence entre mes deux classeurs Excels dont les titres de fenêtre sont pourtant bien différents (à l'aide d'un WinGetTitle j'obtiens "Microsoft Excel - classeur1.xlsm" d'un côté, et "Microsoft Excel - donnees.csv" de l'autre)

Là je suis vraiment bloqué et je ne sais plus quoi faire.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#3

Message par tolf »

Que voulez-vous faire en "navigant" sur Excel ?
Si vous voulez lire et écrire du texte ou des formules dans des cellules, changer la couleur du texte, c'est possible avec ExcelCOM_UDF.au3
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
zozisson
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 30 oct. 2008 11:38
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#4

Message par zozisson »

Quand je dis "naviguer", c'est par exemple aller dans la feuille1 du classeur1, y rechercher des valeurs, les copier, puis aller dans la feuille1 du classeur2 et les coller.
Pour visualiser une feuille d'un classeur, il n'y a pas de problème ; mais c'est pour aller d'un classeur à l'autre que je n'ai pas trouvé de solution.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#5

Message par tolf »

Je pense que les fonctions suivantes devraient vous suffire :

- ouvrir un classeur _ExcelBookOpen
- enregistrer un classeur _ExcelBookSave ou _ExcelBookSaveAs
- fermer le classeur _ExcelBookClose
- changer de feuille de classeur _ExcelSheetActivate
- copier des valeurs _ExcelCopy
- les coller _ExcelPaste
- lire des valeurs _ExcelReadCell ou _ExcelReadArray
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
zozisson
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 30 oct. 2008 11:38
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#6

Message par zozisson »

Et pour passer d'un classeur à l'autre, existe-t-il une fonction du même genre ?
(Je n'ai pas trop envie d'ouvrir mon classeur1, d'y copier des données de ma feuille1, de refermer mon classeur1, puis d'ouvrir mon classeur2, d'y coller les données, de sauver mon classeur2, de le refermer, d'ouvrir mon classeur1, d'y copier des données ... et cela une petite vingtaine de fois!!!)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#7

Message par Tlem »

C'est la fonction _ExcelSheetActivate qui à été évoquée précédemment.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
zozisson
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 30 oct. 2008 11:38
Status : Hors ligne

Re: [R] Problème de navigation dans Excel

#8

Message par zozisson »

Voici mon code modifié suite à vos indications :

Code : Tout sélectionner

; Inclusion des modules nécessaires
#include <ExcelCOM_UDF.au3>

; Déclaration des variables
$sfichier1_path = "C:\dossier\suivi.xlsm"
$sfichier2_path = "C:\dossier\donnees.csv"
$vSheet1 = "traitement_donnees"
$vSheet2 = "donnees"

; Code
$oclasseur_suivi = _ExcelBookOpen($sfichier1_path)
WinWaitActive("Microsoft Excel - suivi.xlsm")

$oclasseur_donnees = _ExcelBookOpen($sfichier2_path)
WinWaitActive("Microsoft Excel - donnees.csv")

_ExcelSheetActivate($oclasseur_suivi, $vSheet1)
MsgBox(0, "Message test", "Contrôle #" & 1.1)

_ExcelSheetActivate($oclasseur_donnees, $vSheet2)
MsgBox(0, "Message test", "Contrôle #" & 1.2)
En procédant ainsi, la feuille "traitement_donnees" du classeur suivi.xlsm ne s'affiche pas ; la feuille "donnees" du classeur donnees.csv quant à elle s'affiche.
Ma syntaxe est-elle mauvaise ? Comment faire pour remédier à ce problème ?

PS: j'utilise Excel2007
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Problème de navigation dans Excel

#9

Message par tolf »

Tlem a écrit :C'est la fonction _ExcelSheetActivate qui à été évoquée précédemment.
Cette fonction permet de changer de feuille au sein d'un classeur et non pas de classeur.
En revanche, il est tout à fait possible d'ouvrir plusieurs classeurs simultanément en utilisant des handle différents :

Code : Tout sélectionner

$oXls1 = _ExcelBookOpen("fichier1.xls", 0)
$oXls2 = _ExcelBookOpen("fichier2.xls", 0)

; actions à effectuer sur les classeurs

_ExcelBookClose($oXls1, 0)
_ExcelBookClose($oXls2, 0)
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [R] Problème de navigation dans Excel

#10

Message par tolf »

zozisson a écrit :En procédant ainsi, la feuille "traitement_donnees" du classeur suivi.xlsm ne s'affiche pas ; la feuille "donnees" du classeur donnees.csv quant à elle s'affiche.
A priori, si vous voulez seulement lire des valeurs dans des cellules, les copier et les coller dans d'autres cellules, il n'est pas nécessaire d'afficher la fenêtre d'excel. Pour cacher la fenêtre, ouvrez excel comme ceci :

Code : Tout sélectionner

_ExcelBookOpen("fichier1.xls", [b]0[/b])
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Répondre