Difficulté Facile
Note
Mis à jour le lundi 22 avril 2013

Le VBA est un langage orienté objet. On dira également que vous faites de la Programmation Orientée Objet (POO). Ces mots n'ont probablement aucun sens pour vous, à moins que vous n'ayez déjà fait du C++ ou encore du Java.

Nous allons tenter d'étudier le concept en lui-même, puis en suite de l'appliquer à notre problème.

Dans la vie courante, vous reconnaissez un objet parce qu'il a un état physique, il est visible et vous pouvez le toucher. Une brosse à dents est un objet, un verre est un objet, un ordinateur en est un également... bref, la liste est longue.

L'objet peut être reconnaissable grâce à sa couleur, par exemple, mais vous pouvez aussi effectuer des actions dessus.

Nous allons prendre comme exemple votre maison (ou appartement, ne me dites pas que vous habitez dans un bateau... même si ça ne change pas grand-chose). Une maison est caractérisée par ses propriétés : elle a une année de construction, une couleur... mais on peut aussi y faire beaucoup d'action : Nettoyer, Regarder la télé ... on parle alors de méthodes .

À partir de ces propriétés et méthodes, vous pouvez imaginer plein de maisons différentes, en faisant varier le nombre de pièces, par exemple. Les propriétés permettent d'identifier la maison, de la caractériser, de la singulariser. Les méthodes forment toutes les actions que l'on peut exécuter à partir de cet objet.

Toutes ces maisons ont donc été fabriquées à partir d'un plan. On parle d'une classe.

Lorsque vous fabriquez un objet à partir d'une classe, on dit que vous faites une instance de classe.

M@teo21 a une belle image pour ceci : imaginez un architecte qui dessine un plan de maison. Le plan correspond ici à ma classe et les maisons aux objets : en effet, à partir du plan, vous pouvez bâtir autant de maisons que vous le voulez !! J'ajoute que la définition de toutes les maisons de l'Univers, même imbriquées dans des classes différentes s'appelle une collection d'objets. ;)

La maison : propriétés, méthodes et lieux

Continuons avec notre exemple de la maison.

Vous êtes dans votre maison et vous voulez prendre un bain (c'est une méthode), vous allez donc devoir vous rendre dans la salle de bain. Pour cela, il y a un ordre à respecter. Vous devez d'abord trouver la ville dans laquelle se trouve la maison, puis l'adresse précise et enfin trouver la salle de bain.

Puisque toutes les villes se ressemblent, nous pouvons considérer la classe Villes. De là, vous trouvez votre ville à vous, qui est une instance de Villes, ou un objet issu de Villes. Il en est de même pour la classe Maisons. Des maisons, il y en a des tonnes, mais la vôtre se distingue parce que c'est votre maison.

L'itinéraire à suivre est donc le suivant :

Ville > Maison > Salle de Bain > Bain

En code VBA, cet itinéraire se précise en partant du plus grand conteneur ; ici, la ville contient la maison, qui contient la salle de bain, et il y a la baignoire que nous désirons.

C'est comme les poupées russes : la ville est la plus grosse poupée qui contient toutes les maisons.

Les lieux et objets sont séparés par un point. Le code serait donc ceci :

Villes("Reims").Maisons("Ma_Maison").Salle_de_bains("Bain")

' Dans la classe Villes, votre ville se distingue des autres par son nom : Reims. 
' Reims est un objet créé à partir de la classe Villes, qui contient aussi bien Paris que Bordeaux.

Vous accédez ainsi à l'objet "Bain". Entre parenthèses et guillemets, vous donnez des précisions. En effet, la baignoire se différencie des autres parce qu'elle permet de prendre un bain, vous ne pourriez pas construire un objet "Lavabo" à partir de la classe "Salle_de_bain" pour faire un bain.

Nous pouvons même rajouter une méthode à la fin, puisque vous désirez vous laver :

Villes("Reims").Maisons("Ma_Maison").Salle_de_bains("Bain").Frotter_le_dos

Et si vous désiriez vous laver les mains, on aurait pu créer ce fameux objet Lavabo, toujours issu de la classe Salle_de_bains :)

Tout ceci n'est que schéma bien sûr, mais la syntaxe correspond à celle d'un vrai code VBA. Vous prenez donc l'objet crée à partir de la classe Salle_de_bain, vous prenez une instance de la classe Baignoire.

Retenir :

L'accès aux objets se fait comme suit :

nom_de_la_classe("Nom de l'instance de cette classe")

Les auteurs