Pour vous représenter physiquement un objet Excel, imaginez que vous avez devant vous une boîte noire dont vous ne pouvez pas voir l’intérieur. Par contre, vous avez une documentation qui décrit les caractéristiques (on parle de propriétés) de l’objet. A l’aide de cette documentation, vous avez donc une vue globale de l’objet, sans pour autant en connaitre les mécanismes. Mais après tout, c’est bien ce que vous voulez : utiliser Excel et pas comprendre comment il a été programmé !
Certaines propriétés sont accessibles en lecture seulement. D’autres en lecture et en écriture.
Vous utiliserez les premières pour connaitre la valeur de telle ou telle propriété. Vous utiliserez les secondes pour connaitre, mais aussi pour modifier les propriétés de l’objet.
Pour sélectionner l’objet ou les objets sur lesquels vous voulez lire ou modifier une propriété, vous utiliserez des méthodes. Par exemple, la méthode Workbooks(« classeur1.xlsm ») sélectionne le classeur classeur1.xlsm. Ou encore, la méthode Range(B3-B5) sélectionne la plage de cellules B3 à B5.
Pour utiliser une méthode, vous devez la plupart du temps faire référence à son parent. Par exemple, vous ne pouvez pas utiliser la méthode Range() sans préciser la feuille de calcul concernée. De même, vous ne pouvez pas utiliser la méthode Worksheets() sans préciser le classeur concerné. Par contre, lorsque vous sélectionnez un classeur, il n’est pas nécessaire d’indiquer son parent Application : cette liaison est implicite. La liaison parent-enfant se fait à l’aide d’une simple énumération, de la gauche vers la droite, de l’ancêtre le plus éloigné jusqu’à l’objet que vous voulez utiliser. L’expression se termine généralement par une propriété à laquelle vous affectez une valeur ou dont vous voulez connaitre la valeur.
Par exemple, dans cette expression :
Workbooks("classeur1.xlsm").Worksheets("Feuil1").Range("C8") = "J’ai tout compris"
- Workbooks(« classeur1.xlsm ») sélectionne le classeur classeur1.xlsm ;
- Worksheets(« Feuil1 ») sélectionne la feuille Feuil1 dans le classeur classeur1.xlsm ;
- Range(« C8 ») sélectionne la cellule C8 dans la feuille Feuil1 du classeur classeur1.slsm ;
- = « J’ai tout compris » affecte une valeur texte à la cellule C8 de la feuille Feuil1 du classeur classeur1.slsm.
Vous voyez, il n’y a rien de bien compliqué.
Le tout est de connaitre :
- la hiérarchie des objets pour pouvoir les interconnecter dans une expression « à points » ;
- les méthodes et les propriétés des différents objets.
Les articles à venir vont progressivement vous familiariser avec les objets et les propriétés utilisables en VBA Excel, jusqu’à ce que vous vous sentiez « chez vous ». L’objectif sera alors atteint et il ne vous restera plus qu’à manipuler toutes ces entités pour faire des merveilles dans votre tableur !
La propriété Value d’un objet Range
Pour bien comprendre les mécanismes de base du VBA, raisonnons sur un exemple pratique.
La propriété Value d’un objet Range permet d’accéder en lecture et en écriture aux cellules concernées. Par exemple, l’instruction suivante affecte la valeur numérique 35 à la cellule C8 de la première feuille de calcul du classeur Classeur1.xlsm :
Workbooks("Classeur1.xlsm").Worksheets(1).Range("C8").Value = 35
La méthode Range() permet d’accéder à une cellule ou à une plage de cellules. Par exemple, pour affecter la valeur texte « bonjour » à la plage de cellules A1-C3, vous utiliserez cette instruction :
Workbooks("Classeur1.xlsm").Worksheets(1).Range("A1 :C3").Value = "bonjour"
Vous voulez savoir ce qui se trouve dans la cellule A2 ? Utilisez cette instruction :
Dim texte As String texte = Workbooks("Classeur1.xlsm").Worksheets(1).Range("A2").Value
Vous pourrez par la suite affecter à une autre cellule la valeur lue dans la cellule A2. Par exemple, à la cellule A3 :
Workbooks("Classeur1.xlsm").Worksheets(1).Range("A3").Value = texte
Bonjour,
N’y aurait-il pas confusion entre objet et méthode ?