[Tuto] Utiliser Excel avec Autoit

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
Avatar du membre
20100
Niveau 3
Niveau 3
Messages : 43
Enregistré le : ven. 03 juil. 2009 11:39
Status : Hors ligne

[Tuto] Utiliser Excel avec Autoit

#1

Message par 20100 »

  • Présentation :
    • Dans ce tutoriel nous allons aborder les mécanismes de communication entre Excel et AutoIT, autrement dit nous allons voir comment utiliser les méthodes issue du modèle Objet Excel dans AutoIT. Certes il existe de nombreux UDF, comme ExcelCOM permettant de manipuler Excel ces mêmes fonctions semblent d'ailleurs avoir été intégré à la version d'AutoIT 3.3, mais en utilisant ces fonctions on peut se retrouver bloquer sur certaines fonctionnalités non prise en compte dans la librairie et surtout on ne comprend absolument pas ce qui se passe derrière. Comprendre ces mécanismes de communication c'est se donner les moyens d'adapter la libraire à ses besoins.
    Version du tutoriel :
    • Version 0.2
    • Date de dernière mise à jour le 10/09/2009
    • Ajout du Hacks 9 : Recherche d'une valeur dans un range avec la méthode Find (plage)
    • Ajout du Hacks 10 : Tester l'existence d'instance Excel en cours d'execution
    Pré-requis :
    • Connaître le modèle Objet Excel - si vous ne le connaissez pas je vous propose un peu de lecture ici
    • Quelques connaissances succinctes en VBA
    • Les bases d'utilisation de la programmation AutoIT
    • Avoir Excel installé sur la machine faisant tourné le script... cela va de soit
    Introduction
    Nous allons donc voir en premier temps présenter Microsoft COM et plus particulièrement le processus d'Automation COM que l'on va utiliser dans AutoIT pour manipuler automatiquement Excel. On fera un rappel rapide sur le modèle Objet Excel.


    1 - Microsoft COM et Excel
    • Microsoft COM (Component Object Model) est un standard permettant de définir des API objet, c'est-à-dire permettant à des applications de communiquer par l'intermédiaire d'objets possédant un certain nombre de méthodes et de propriétés publiques. On rappelle qu'il existe deux caractéristiques à la notion d'Objet, les propriétés qui caractérise l'objet et les méthodes qui définissent des fonctions internes de cet objet. On peut citer les objets ActiveX qui sont un type particulier d'objets COM.

      Microsoft COM fournit des mécanismes permettant des liens entre applications, parmi lesquels :
      • liaisons dynamiques entre applications appelés OLE (Object Link and Embedding) pour la liaison et incorporation d'objets par exemple de lier un fichier tableur dans un document
      • mécanismes d'échanges de messages dynamiques entre applications, appelés DDE (Dynamic Data Exchange).
      • mécanismes d'automates (automation) permettant de prendre contrôle d'une application à distance.
      De nombreuses applications sous environnement Windows possèdent une interface COM donnant la possibilité d'invoquer leur méthode dans un programme. C'est notamment le cas pour Mircrosoft Office et en particulier pour Excel. Nous allons surtout nous intéresser au mécanisme d'automation COM d'Excel par la suite.

    2 - Notions sur le modèle Objet Excel
    • Je ne vais pas vous faire un rappel total du modèle Objet Excel mais au moins vous présenter rapidement l'essentielle à connaître.

      Classe, Objet, Attribut, Méthode et Collection
      Excel possède une hiérarchie d'objets organisée en arbre et chaque objet possède des membres (attributs+méthodes). Les attributs sont des variables typés (Int, Float, String, Object ...) ou des collections et permettent de décrire l'objet. Une collection d'objet est l'ensemble des objets d'une classe, tandis qu'une classe d'un objet désigne la définition commune d'un ensemble d'objets (dans Excel une collection de l'objet Object sera nommé Objects). Enfin chaque objet possède aussi des méthodes qui décrivent les comportements de l'objet.

      Quelques exemples de ces notions dans Excel :
      • Un objet de la classe Workbook possède la méthode SaveAs pour sauvegarder le classeur dans un chemin spécifique. Il possède aussi l'attribut ActiveSheet qui est une String contenant la feuille courante active de ce WorkBook (L'objet Workbook possède évidement bien d'autres membres)
      • La collection WorkBooks renvoie tous les objets Workbook, autrement dit tous les classes ouverts.
      • La collection WorkSheets renvoie toutes les feuilles d'un objet Workbook.
      Instanciation
      Lorsqu'on créer une instance d'une classe, c'est à dire un objet. Cet objet possède tous les attributs et méthodes définies dans la classe de l'objet. Il s'agit de l'étape d'instanciation en programmation objet. C'est pour ça qu'on confondra fréquemment le terme objet avec le terme instance. Une instance d'une classe est un objet.

      Hiérarchie du modèle objet Excel
      Tout en haut du modèle objet Excel ce trouve l'objet Application. Il possède de nombreux attributs et méthodes dont notamment la collection Workbooks qui est un attribut de l'objet Application et qui désigne l'ensemble des classeurs ouverts (Instance Workbook). Une instance Workbook correspond à un classeur et donc à un fichier xls. Une instance Worksheet correspond à une feuille de calcul. Les objets de type Worksheet sont référencés dans la collection Worksheets d'une instance Workbook. Une instance Range est une collection de cellules présentes dans une feuille de calcul.
      Image
      Si vous voulez plus de lecture sur le modèle objet Excel c'est par la :

    3 - Automation Excel dans AutoIT
    • Pour pouvoir prendre la main sur Excel dans AutoIT, il suffit de taper la ligne de code suivante

      Code : Tout sélectionner

      $oExcel = ObjCreate("Excel.Application")
      La fonction ObjCreate d'autoIT permet de créer une référence sur le COM Object de l'application ciblé (ici dans l'exemple, il s'agit d'Excel) et ainsi d'accéder à ces méthodes et attributs. Autrement dit avec cette fonction, on va atteindre le point le plus haut du modèle objet Excel c'est à dire l'objet Application, à partir duquel on va pouvoir utiliser toutes les membres que l'on veut. Si on exécute juste cette ligne de code, on peut contrôler dans le gestionnaire de tâche de Windows qu'un processus Excel a bien été lancé.

      Par exemple on va utiliser l'attribut Visible de l'instance $oExcel pour rendre l'application Excel visible. Il suffit d'utiliser le caractère "." pour appliquer un membre sur une instance, ainsi :

      Code : Tout sélectionner

      $oExcel.Visible = 1 ; Rend l'instance $oExcel visible
      On peut aussi utiliser la méthode Add de la collection Worbooks qui est l'attribut de l'instance $oExcel pour ajouter un nouveau workbook dans cette instance. On rappelle qu'un Workbook est un classeur et correspond donc à un fichier excel xls.

      Code : Tout sélectionner

      $oExcel.WorkBooks.Add ; Ajoute un nouveau workbook
      Pour appliquer plusieurs attributs et méthodes en même temps sur l'instance $oExcel, AutoIT nous fournit les mots-clefs WITH [...] ENDWITH qui s'utilise de la manière suivante :

      Code : Tout sélectionner

      Local $oExcel = ObjCreate("Excel.Application")
      With $oExcel
          .Visible = 1
          .WorkBooks.Add
      EndWith
      Pas besoin de plus pour comprendre le processus d'automation COM avec Excel, c'est la connaissance du modèle Objet Excel qui va vous permettre de programmer ce que vous voulez... autrement dit tout ce qu'un humain peut faire dans Excel correspond à la modification d'attributs d'objets Excel ou à l'utilisation de méthodes.
    Hacks Excel
    Dans la suite du tutoriel, je ne vais pas vous donner la liste de touts les attributs et méthodes possibles mais celles qui me paraissent pertinentes à travers le descriptif de plusieurs exemples.


    1 - Créer une feuille Excel
    ► Afficher le texte
    2 - Sauvegarder sous
    ► Afficher le texte
    3 - Compter le nombre de colonnes et de lignes utilisées dans une feuille
    ► Afficher le texte
    4 - Autofit sur les colonnes d'une feuille
    ► Afficher le texte
    5 - Copier une feuille dans une nouvelle feuille du même classeur
    ► Afficher le texte
    6 - Effectuer un tri sur une colonne
    ► Afficher le texte
    7 - Utiliser un filtre élaboré Excel
    ► Afficher le texte
    8 - Convertir un fichier csv en un fichier Excel
    ► Afficher le texte
    9 - Recherche d'une valeur dans un range avec la méthode Find (plage)
    ► Afficher le texte
    10 - Tester l'existence d'instance Excel en cours d'execution
    ► Afficher le texte
Informations utiles
Quelques remarque de fin sur la manipulation automatiquement Excel dans AutoIT.


1 - Comment traduire une action humaine sous Excel dans AutoIt
  • Je vous donne ici une petite astuce vous permettant de traduire une action humain sous Excel dans AutoIT.
    • Tout d'abord vous allez enregistrer une macro dans Excel correspondant à l'action que vous souhaiter automatiser dans AutoIT.
    • Une fois la macro enregistrer vous allez lire le code VBA généré dans le Visual Basic Editor d'Excel. Vous avez ainsi une idée des attributs et des méthodes utilisées.
    • Ensuite vous pouvez vous rendre sur le site http://social.msdn.microsoft.com/Search/fr-FR/ afin de rechercher tel méthode ou attribut. Ainsi vous aurez le descriptif de la signature et vous pourrez l'appliquer à vos besoins.

2 - Microsoft Office VBA Constants pour AutoIT
  • Il arrive souvent que les méthodes ou attributs utilisées dans Excel utilise certaines constantes particulières qu'il faut bien traduire dans AutoIT.

    Par exemple le paramètre missing en VBA est traduit en Default dans AutoIT. Ou encore le paramètre $xlFilterInPlace utilisé dans la méthode AdvancedFilter qui précise à cette méthode si elle doit laissé les données filtrées en place est traduit dans Excel par la valeur $xlFilterInPlace = 1.

    Voici un lien ou vous trouverez toutes les constantes Microsoft Office pour Excel, Outlook, Access, FrontPage, Document Imaging, et MS Graphing. Microsoft Office VBA Constants
[/list]



Je n'ai pas eu le courage de relire pour corriger les feâuthes... ni vérifier qu'aucune erreur ne se soit glissé dans les exemples de code... ^^ merci pour votre indulgence ^^
... si tel était le cas... corriger les erreurs tu devras ...
Modifié en dernier par 20100 le ven. 10 sept. 2010 14:14, modifié 2 fois.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#2

Message par tolf »

Encore un fois bravo pour ce tutoriel qui servira à plus d'un :D
Bonne introduction aux COM, recherche des liens pour en savoir plus, et pas tant de fautes que ça :lol: :lol:
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
20100
Niveau 3
Niveau 3
Messages : 43
Enregistré le : ven. 03 juil. 2009 11:39
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#3

Message par 20100 »

Arigatô Gozaimasu :wink:
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#4

Message par SrBelial »

Merci pour ce super tuto qui vient de me sauver ma vie ^__^
Bon je vois qu'il a déjà un an, est ce que quelqu'un saurait si il va être amené à évoluer ou non ?
parce que éventuellement j'aurais des choses à ajouter que j'ai découvert de mon côté,

comme par exemple manipulation des charts excel en utilisant l'automation com ou bien encore la liste des différents enums utilisé par excel pour décrire le positionnement des légendes par exemple (très pratique pour pouvoir modifier le style d'un graphique depuis autoit) ....

donc voila si ça intéresse quelqu'un je peux me charger de le faire. Sachant que une question se pose : doit on continuer à la suite de ce topic ou en créer un tout neuf ?
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#5

Message par jbnh »

Salut,

Bien sur tu peux toujours continuer ce tuto, le but d'un membre d'une communauté est de partager et apporter du contenu à celle-ci !

Par contre je suis plus d'avis que tu crées un topic à toi mais tu peux toujours reprendre le même titre et ajouter un [suite] par exemple.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#6

Message par SrBelial »

Ok ça marche,
quand j'ai un moment je m'y mets ^__^
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
20100
Niveau 3
Niveau 3
Messages : 43
Enregistré le : ven. 03 juil. 2009 11:39
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#7

Message par 20100 »

Merci SrBelial,

Comme le précise jbnh, le but du forum est de partager des connaissances, n'hésite pas à venir enrichir les connaissances de ce tutoriel afin d'en faire profiter la communauté.

Vu les possibilités offertes par l'objet Excel, on pourrait écrire des pages et des pages sur ce qu'il est possible de faire, mais je pense qu'en suivant ce tuto on est amène de comprendre les mécanismes et donc de se réapproprier l'ensemble des fonctionnalités proposés par Excel.

Mais je te l'accorde c'est toujours agréable de tomber sur un exemple clair.
comme par exemple manipulation des charts excel en utilisant l'automation com ou bien encore la liste des différents enums utilisé par excel pour décrire le positionnement des légendes par exemple (très pratique pour pouvoir modifier le style d'un graphique depuis autoit) ....
See ya ;)
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [Tuto] Utiliser Excel avec Autoit

#8

Message par SrBelial »

coucou !
^__^
une tite partie de ce que je voulais faire est déjà écrite .... j'ai créé un tuto exprès ...
il me reste encore quelques points que je veux partager .... quand j'aurais le temps ! lol
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Répondre