Page 1 sur 1

[R] Problème de navigation dans Excel

Posté : jeu. 06 nov. 2008 17:31
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.

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

Posté : mer. 12 nov. 2008 17:53
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.

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

Posté : jeu. 13 nov. 2008 20:09
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

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

Posté : lun. 17 nov. 2008 09:13
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.

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

Posté : lun. 17 nov. 2008 19:50
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

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

Posté : mar. 18 nov. 2008 18:32
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!!!)

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

Posté : mar. 18 nov. 2008 20:44
par Tlem
C'est la fonction _ExcelSheetActivate qui à été évoquée précédemment.

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

Posté : mer. 19 nov. 2008 12:58
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

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

Posté : mer. 19 nov. 2008 13:02
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)

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

Posté : mer. 19 nov. 2008 13:07
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])