Credit & Loan

Feb 12 2019

VBA pour Excel – Objets et йvйnements Excel, donner objet.

#Donner #objet


Dйfinitions

En fait, un objet est une "entitй" informatique qu’un programme informatique peut manipuler.

Dans le cadre du prйsent tutoriel, un objet est une entitй externe а VBA que votre programme VBA peut (veut?) manipuler.

Le cas le plus йvident est une cellule de classeur. Pour la manipuler, VBA utilise une instance de la classe Range.

Par exemple, toutes les feuilles Excel ont la propriйtй Name, mais la valeur de la propriйtй Name est diffйrente pour chaque feuille (du moins on le souhaite).

Par exemple, la mйthode Copy d’une cellule permet de copier le contenu de cette cellule dans le presse-papier (ou dans une autre cellule).

Йvidemment, il arrive qu’une mйthode change les propriйtйs d’un objet. Par exemple, la mйthode PasteSpecial d’une cellule change une ou plusieurs propriйtйs de cette cellule.

Par exemple, un classeur Excel est une collection Sheets d’objets WorkSheet et/ou Chart

Modиle Objet Excel

VBA peut manipuler le contenu d’un classeur Excel par les objets qu’il contient. Mais comment trouver le nom de l’objet (ou de la classe) qu’il faut utiliser?

Le plus simple est d’utiliser l’enregistreuse de macro-commande.

Par exemple, pour trouver comment changer la couleur de fonds d’une feuille Excel,

Dйmarrez l’enregistreuse de macro-commandes, en notant l’endroit oщ elle sera enregistrйe.

Changez la couleur du fonds (sйlectionner la feuille, afficher la boоte de dialogue Format de cellule, choisir l’onglet remplissage puis une couleur).

Arrкtez l’enregistreuse de macro-commande.

Affichez-lа dans l’йditeur VBA. Elle ressemble а:

Dans cet enregistrement, on reconnait les objets:

Sheets("Feuil1"): la feuille Feuill1 .

Cells : collection de toutes les cellules de la feuille.

Interior: collection de tous les intйrieurs des cellules.

et les mйthodes:

  • Select
  • L’objet recherchй est donc:

    Sheets("Feuil1").Cells.Interior

  • L’aide VBA Excel nous indique alors que cet objet possиde une propriйtй Color. On peut donc programmer:

    Ce qui est beaucoup plus efficace que le code produit par l’enregistreuse.

  • Une faзon plus complexe est d’explorer le modиle objet Excel.

    L’aide VBA Excel 2007 permet de l’explorer en accйdant а la rubrique:

    Rйfйrence du dйveloppeur Excel 2007

    Utilisez plutфt l’aide VBA Excel 2003, qui est installйe а l’adresse

    C:\Program Files\Microsoft Office\OFFICE11\1036\VBAXL10,CHM

    Vous pouvez alors parcourir la hiйrarchie des objets Excel:

    et trouver l’objet qui vous intйresse en cliquant d’abord sur Range, puis en trouvant la propriйtй ou l’objet Interior, et en devinant qu’il faut adresser l’objet Interior de la collection Cells de la feuille voulue.

    Principaux objets Excel

    Les cellules Excel sont des objets de la classe Range.

    La meilleure faзon d’accйder aux propriйtйs d’une plage de cellules Excel depuis VBA est de nommer cette plage en Excel, puis d’utiliser ce nom comme rйfйrence de range.

    Une technique beaucoup moins utile (mais hйlas trop rйpandue) est d’utiliser l’adresse de la plage.

    Une variante de cette technique est l’utilisation de la mйthode Evaluate (voir plus loin).

    Aussi peu utile.

    Deux autres faзons utilisent des numйros de ligne et de colonne, et sont beaucoup plus utiles.

    • Cells(3,5) est un objet contenant la cellule E5 (ligne 3, colonne 5).

    Attention, l’objet Cells utilise l’adressage Ligne, Colonne, alors que Excel utilise Colonne, Ligne (E5).

    • Range("A1").Offset(3,5) est un objet contenant la plage F4 soit un dйplacement de 3 lignes et 5 colonnes а partir de A1.

    Ces deux derniиres techniques peuvent кtre utilisйes avec l’objet Range pour dйsigner des plages.

    L’utilisation d’un nom de plage au lieu d’une adresse permettra de dйplacer la plage dans Excel sans devoir modifier la programmation VBA.

    Il est donc FORTEMENT suggйrй de manipuler les lignes d’une liste de donnйes ainsi:

    Nommez la cellule de gauche de l’entкte de liste.

    Utilisez la notation Range(nom).Offset(ligne,colonne) pour reprйsenter les champs de la liste.

    Cellule ou plage? Le modиle objet Excel ne fait pas la diffйrence entre une plage et une cellule. Une cellule est simplement une plage ne contenant qu’une cellule.

    Range("A1:B9") est un objet de la mкme classe que Range("A1") et possиde donc les mкmes propriйtйs (dont les valeurs peuvent кtre diffйrentes) et mйthodes.

    Un objet Range est aussi une collection de cellules, Comme une cellule est un Range (d’une cellule), c’est une collection ne comptant qu’un objet.

    Plages spйciales. Certaines propriйtйs du modиle objet Excel contiennent des plages spйcifiques:

    Les objets Range ont un grand nombre de propriйtйs. Voici les plus intйressantes:

    Les feuilles Excel sont des objets de la classe Worksheet.

    On peut manipuler une feuille de classeur par son nom:

    Worksheets("Provinces") est la feuille nommйe province.

    Sheets("Provinces") est aussi la feuille nommйe province.

    La diffйrence entre les deux collections est que la collection Sheets contient aussi les objets Chart du classeur.

    Les classeurs Excel sont des objets de la classe Workbook.

    Tous les classeurs ouverts sont regroupйs dans la collection Workbooks.

    Workbook("VBA Exemples.xls") est le classeur VBA Exemples.xls

    La programme Excel lui-mкme, lorsque dйmarrй, est un objet de la classe Application.

    Le classeur actif est: Application.ActiveWorkbook ou plus simplement ActiveWorkbook.

    Le classeur contenant le code VBA en cours d’exйcution est:Application.ThisWorkbook ou plus simplement ThisWorkbook.

    La feuille active du classeur actif est:Application.ActiveWorkbook.ActiveSheet ou plus simplement ActiveSheet.

    La cellule active de la feuille active du classeur actif est:Application.ActiveWorkbook.ActiveSheet.ActiveCell ou plus simplement ActiveCell.

    La cellule active de la feuille nommйe Province du classeur actif est:Application.ActiveWorkbook.Worksheets("Province").ActiveCell ou plus simplement Worksheets("Province").ActiveCell.

    L’objet Selection est l’objet passe-partout, qui contient ce qui est sйlectionnй dans le classeur Excel. Ce peut кtre une plage, un graphique, un tableau croisй ou n’importe quoi. L’utilisation de Selection en VBA est а йviter, puisqu’il risque fort de contenir une sйlection inattendue lors de l’exйcution du programme.

    La barre d’йtat de la fenкtre Excel est l’objet StatusBar.

    Mйthodes Excel

    La plupart des opйrations que l’utilisateur peut faire en Excel peuvent кtre programmйes en VBA grвce aux mйthodes des diffйrents objets du modиle objet Excel.

    Voici les plus intйressantes:

    [2+2] йquivaut а Evaluate("2+2") et vaut 4. Attention, ce qui est incorrect dans une cellule est incorrect pour Evaluate.

    • [A1] йquivaut а Range("A1").Value
    • [Sum("A2:H6")] exйcute la formule Excel Somme("A2:H6")

    Cette mйthode permet de savoir si une cellule appartient а une plage:

    est faux si B6 fait partie de la plage Provinces.


    Written by BANK


    Leave a Reply

    Your email address will not be published. Required fields are marked *