Que sont les objets ? Exemple du téléphone portable

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é MsgBox ActiveCell.Deleted N'existe pas

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)
Cells(190,250)

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")
  .Value = "Salut"
  .Font.UnderLine = True
  .Orientation = xlVertical
End With