Maintenant, il est temps de tester la POO en pratique, donc dans Excel (parce que les maisons, c'est bien, mais nous nous éloignons).
Je propose toutefois un schéma qui va aider à comprendre la suite :
On voit, par exemple, que les couleurs sont des instances de la classe
Maison : ils ont quelque chose en commun, comme la forme de la maison.
De même pour l'appartement du 3
ème étage, qui est une instance de la classe
Appartement. Le tout est contenu dans un grand objet : la ville.
Pour Excel, c'est un peu la même chose : le big des big objets, c'est
Application, qui désigne l'application Microsoft Excel.
Lui-même contient la classe
Workbooks, qui regroupe tous les classeurs
Workbook ouverts. Et Workbook contient la classe
Worksheets, qui contient toutes les feuilles
Worksheet du classeur désigné.

Un schéma pour mieux comprendre :
La POO en pratique
Nous allons faire nos débuts en POO avec la méthode
Activate, qui active (qui vous amène) là où vous lui demandez.
Par exemple, je veux aller de la première feuille à la deuxième. Il va falloir donc nommer notre classeur et deux feuilles, afin de donner un itinéraire.
Enregistrez votre classeur en le nommant "
Essai". Renommez une première feuille "
Départ" et l'autre "
Arrivée". (l'explication se trouve dans la seconde annexe).
Vous obtenez quelque chose dans ce genre :
Placez-vous sur la feuille Départ, ouvrez la fenêtre de VBA, créez un nouveau module.
Maintenant, réfléchissons à l'itinéraire. On part de l'application, pour aller vers le classeur "Essai" et vers la feuille "Arrivée".
Le code serait donc :
Code : VB.NET | Sub trajet()
Application.Workbooks("Essai").Worksheets("Arrivée").Activate
'On part de l'application vers l'instance Essai de la classe Workbooks
'ensuite, on va à l'objet Arrivée de la classe Worksheets
End Sub
|
Notez que le logiciel peut vous proposer une liste de classes :
Toutefois, on peut le raccourcir : c'est comme avec les pièces de la maison, si vous êtes dans la maison, il est inutile de préciser qu'il faut aller dans cette ville et à l'adresse de la maison, puisque vous y êtes déjà.
Ici, vous êtes bien sûr l'application Microsoft Excel (logique) et vous êtes aussi sur le classeur "Essai".
Le bon code est donc :
Code : VB.NET | Sub trajet()
Worksheets("Arrivée").Activate
End Sub
|
Il ne vous reste plus qu'à aller sur la feuille "Départ", d'y dessiner un rectangle, d'affecter votre macro et de cliquer dessus, vous serez "téléporté" vers la feuille "Arrivée"
A retenir
La classe
Workbooks désigne tous les classeurs ouverts.
La classe
Worksheets désigne toutes les feuilles du classeur actif.
D'autres exemples
Nous allons sélectionner une plage de cellules en tapant un code VBA (bien que nous pourrions le faire par le biais de l'enregistreur de macros, mais cette partie deviendrait donc dépourvue d'utilité

)
Tout d'abord, il serait bien de ne pas avoir à taper des plages dans un code via les coordonnées : il y a tellement de chiffres, de lettres, de caractères (guillemets, deux points) qu'on s'y perdrait. Je vais donc vous apprendre à ... nommer une plage de cellules !

D'ailleurs, vous pourrez trouver son utilité dans les formules, bref, ça clarifie un code. Ainsi, vous appellerez la plage par son nom.
Voici comment on nomme une plage de cellule. Sélectionnez une plage de cellule, quelle qu'elle soit. Lorsque cette plage est sélectionnée, faites un clic droit et cliquez sur «
Définir un nom » :
Une fenêtre s'ouvre, il suffit de remplir le champ «
Nom » et de cliquer sur «
OK » :
Vous remarquez que, à gauche de la barre de formule, apparait le nom de votre plage. C'est ce nom de plage que vous pouvez utiliser.
Vous pouvez retrouver votre plage à partir de cette liste déroulante en cliquant sur le nom de votre plage.
Mais revenons à notre feuille de calculs et préparons le terrain : mettons une bordure rouge autour de notre plage nommée et dessinons un rectangle, afin d'y appliquer la macro de sélection (que nous allons coder).
Aller, hop hop hop, ouvrez VBE !

On commence à coder :
Code : VB.NET | Sub MaSelection()
' on placera le code ici
End Sub
|
Rien de palpitant. Les cellules sont sous la tutelle de la classe
Range, que ce soit une cellule ou une plage de cellules (jointes ou non). Nous allons utiliser également la méthode
Select, qui sélectionne ce que vous lui demandez de sélectionner.
Je rappelle qu'il ne sera pas nécessaire de faire mention du classeur ou de la feuille de calculs active, puisque nous y sommes déjà (donc inutile de dire d'y aller

).
Voici le code :
Code : VB.NET | Sub MaSelection()
Range("Ma_Plage").Select
End Sub
|
Retour à notre feuille de calculs, où nous affectons la macro
MaSelection au zoli rectangle

. Après un clic dessus, la magie opère :
Vous rappelez-vous le nom et de la fonction particulière de la cellule de la sélection en haut à gauche, qui n'est pas sur fond bleu ? Mais oui, c'est la cellule active ! Pour rappel, si vous saisissez des données directement sur votre sélection, elles seront rentrées dans la cellule active.
Puis pour le
fun, nous allons changer l'emplacement de cette cellule en VBA !
Il va falloir relever ses coordonnées ; dans mon cas, je prends C11, qui est une cellule de ma plage. Il va falloir utiliser la méthode
Activate (vue ci-dessus) :
Code : VB.NET | Sub MaSelection()
Range("Ma_Plage").Select
' on sélectionne la plage Ma_Plage, qui relève de la classe Range, à l'aide de la méthode Select
Range("C11").Activate
'la cellule C11 devient la cellule active de la sélection, avec la méthode Activate
End Sub
|
Et après un clic sur le rectangle, l'emplacement de la cellule active est effectivement modifié :
Voilà pour les méthodes. Il y en a beaucoup d'autres. Nous les verrons en temps voulu car chacune a une fonction bien particulière. L'idée était surtout de vous initier aux manipulations des méthodes.