
VBA est un langage orienté objets. C'est à dire qu'il fonctionne avec des objets qui ont des propriétés et des méthodes. Pour mieux comprendre, faisons un rapprochement avec un téléphone portable. C'est un objet. Cet objet à plusieurs propriétés : Par exemple, il est noir. On dit que sa propriété Couleur = Noir. On l'écrirait : TéléphonePortable.Couleur = Noir. Si on voulait l'afficher avec un MsgBox, on dirait
| Exemple du téléphone portable | Exemple dans Excel |
| MsgBox TéléphonePortable.Couleur | MsgBox ActiveCell.Value |
| Il afficherait : Noir | Il afficherait la valeur de la cellule dans laquelle vous êtes |
Nous pourrions imaginer que nous pouvons repeindre ce téléphone., en rose par exemple. Nous dirions alors :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Couleur = "Rose" | ActiveCell.Value = "Bonjour" |
| Msgbox TéléphonePortable.Couleur ' Afficherait Rose | MsgBox ActiveCell.Value ' Afficherait Bonjour |
Maintenant, nous imaginons que nous avons beaucoup de propriétés pour notre téléphone portable : La couleur, La marque, Le poids, Le Style d'ouverture, S'il est étanche... Voici comment nous le construirions :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Couleur
= "Gris" TéléphonePortable.Marque = "Ericsson" TéléphonePortable.Poids = 165 TéléphonePortable.StyleOuverture = "Glissière" TéléphonePortable.Etanche = False ' False = Faux |
ActiveCell.Value = "Bonjour" ActiveCell.Orientation = xlVertical |
L'une de ces propriétés est utilisée plus fréquemment que les autres. Par exemple, la couleur. Alors, dans ce cas, si nous le savons, au lieu d'écrire
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Couleur = "Gris" | ActiveCell.Value = "Bonjour" |
Nous pourrions nous permettre d'écrire |
|
| TéléphonePortable = "Gris" | Activecell = "Bonjour" |
Ce téléphone portable a certaines propriétés, mais il possède également d'autres objets : Comme par exemple l'antenne, ou les touches, ou même la batterie. Ce sont des objets qui tout en faisant partie intégrante du téléphone portable sont malgré tout des objets "indépendants". On pourrait avoir un téléphone noir, mais avec une antenne grise par exemple. Nous dirions alors :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Antenne.Couleur = "Gris" | ActiveCell.Font.Bold = True |
Tout ce dont nous venons de parler sont des propriétés. Maintenant, il y a des méthodes. Ce sont des actions. C'est bien beau d'avoir un téléphone portable, mais s'il ne peut rien faire, ce n'est pas très intéressant. Par exemple, nous avons la possibilité de l'allumer. On dirait alors :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Allume | ActiveCell.Delete |
On ne dit pas TéléphonePortable.Allume = Quelque chose. On dit juste Allume, c'est tout. On dit que Allume est une méthode de TéléphonePortable. Maintenant, on peut bien entendu imaginer une propriété Allumé, comme ceci :
| Exemple du téléphone portable | Exemple dans Excel |
| MsgBox TéléphonePortable.Allumé |
Qui dirait True ou False selon qu'il soit allumé ou pas.
Maintenant, le plus intéressant avec un téléphone portable est de pouvoir appeler quelqu'un. Nous allons utiliser une méthode Appelle, comme ceci :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle | ActiveCell.AddComment |
C'est bien joli... Mais QUI doit-il appeler ? Et bien nous avons besoin d'un paramètre, c'est le numéro de téléphone à appeler :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle "079.555.666" | ActiveCell.AddComment "Beau commentaire" |
Et, nous avons d'autres possibilités quand nous appelons.
- Nous pouvons indiquer le préfixe 079, ou pas, ça dépend,
- Nous pouvons même faire un préfixe international : 0041 par exemple,
- et nous laissons sonner un certain nombre de coups.
Appelle est donc une méthode avec plusieurs paramètres. Nous l'appelons comme ceci :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle Préfixe:=079, PréfixeInternational:=0041, N° du correspondant := "555.666", Nombre de coups := 5 | MsgBox Prompt:="Beau message", Buttons:=vbYesNo, Title:="Le titre" |
On n'est pas obligé de dire a quoi correspondent les paramètres, même si c'est plus clair de les mettre. La ligne suivante fonctionne ausi bien :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle 079, 0041, "555.666", 5 | MsgBox "Beau message", vbYesNo, "Le titre" |
Dans le cas ou le préfixe est "par défaut" 079, c'est à dire que si on nme le précise pas c'est ce qu'il fait, et que le 0041 est aussi "par défaut", alors, on peut se permettre de les omettre, il en tiendra compte, mais il faut mettre les virgules pour préciser quels paramètres on désire vraiment préciser :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle , , "555.666", 5 | MsgBox "Beau message", , "Le titre" |
Pareil pour le nombre de coups. Si, par défaut, il laisse sonner 5 coups avant de raccrocher, et que c'est justement ce qu'on veut, alors, on peut l'omettre, et il ne faut pas mettre de virgule si les paramètres sont à la fin de la ligne :
| Exemple du téléphone portable | Exemple dans Excel |
| TéléphonePortable.Appelle , , "555.666" | MsgBox "Beau message" |
Sinon, il faut le préciser :
TéléphonePortable.Appelle , , "555.666", 17
De la même façon qu'on peut avoir plsieurs feuilles de calcul sous Excel, vous pouvez avoir plusieurs téléphones portables. Si vous ne le précisez pas, le téléphone portable actuellement dans votre poche (Activé) est utilisé.
On pourrait vouloir repeindre le téléphone portable qui se trouve dans la chambre. On dirait comme ceci :
| Exemple du téléphone portable | Exemple dans Excel |
| CollectionDeTéléphonesPortables("CeluiQuiEstDansLaChambre").Couleur = "Rouge" | Range("B10").Value = "Bonjour" |
Ils sont d'ailleurs numérotés :
| Exemple du téléphone portable | Exemple dans Excel |
| CollectionDeTéléphonesPortables(1) CollectionDeTéléphonesPortables(2) |
Cells(2,3) |
Etc... En fait de 1 jusqu'au nombre de téléphones portable existants
On a vite fait d'avoir des lignes de commandes monstrueuses. Que pensez-vous de :
| Exemple du téléphone portable | Exemple dans Excel |
| CollectionDeTéléphonesPortables("CeluiQuiEstDansLaChambre").Appelle Préfixe:=076, PréfixeInternational:=0045, N° du correspondant := "67.09.87.90", Nombre de coups := 3 | Sheets("MaFeuille").Range("B7").Font.Bold = True |
On a la possiblité de raccourcir cette syntaxe. Par exemple, en donnant un petit nom à son téléphone de la chambre. Par exemple, au bureau, vous pourriez dire à votre secrétaire:
"Pouvez-vous me composer le 55.66.77.88, avec le téléphone portable qui se trouve dans ma veste grise ?"
De la même façon que dans le langage courant, vous ne dites pas : Mon téléphone portable est noir, Mon téléphone portable à une antenne de 5 centimètres, Mon téléphone portable pèse 160 grammes... Non, vous dites : Mon téléphone portable est noir, a une antenne de 5 centimètres, et pèse 160 grammes.
Et bien ici, c'est pareil. ça se dit comme ça
| Exemple du téléphone portable | Exemple dans Excel |
| With TéléphonePortable("CeluiDuTravail") .Couleur = Noir .Antenne.Longueur = 5 .Poids = 160 End With |
With Range("B7") |