Les macros étaient très utilisées dans les tableurs qui ont été le vecteur principal de leur développement et de celui du langage VBA. Pour créer de la synergie entre ses logiciels, Microsoft a voulu homogénéiser les langages de macro-commandes entre les différentes applications.
Ils ont fort opportunément utilisé les bases de Visual Basic (un langage de programmation à part entière de Microsoft) pour créer le VBA, sigle de Visual Basic for Application. Maintenant vous ne ferez plus de confusion entre les deux, même s’il y a de nombreuses similitudes (orientation objet et filiation de VBA), les différences dans leur emploi sont conséquentes.
Le VBA est basé sur la manipulation d’objets qui représentent les éléments principaux de l’application employée et d’interfaces de pilotage et ne peut exister qu’au sein d’une application hôte. On ne peut accéder à son éditeur de façon séparée et celui-ci n’est accessible qu’au travers de l’application qui l’héberge.
Comme vous l’aurez compris, nous allons travailler avec du VBA à partir d’Excel. Un petit Alt + F11 sur votre clavier et vous serez rendu dans Microsoft Visual Basic pour Applications.
C’est parti. Nous allons réaliser notre premier projet. Chaque macro doit être codée entre les mots-clés Sub et End Sub.
Tapez ceci :
[note note_color=”#fceee6″]Sub nom_de_la_macro ()End Sub[/note]
Essayez de remplacer nom_de_la_macro par quelque chose d’autre, vous verrez que le nom de votre macro est tout de suite reconnue. Par exemple Violetta
Vous pouvez placer des lignes de commentaires pour vous repérer dans le code à l’aide d’apostrophes. Elles n’auront aucune influence lors de l’exécution du code et servent simplement à vous repérer.
Définitions pour le VBA
Le VBA considère des objets, des méthodes et des classes.
Nous essayons de reproduire le schéma suivant : dans un appartement, un sujet regarde la télévision (c’est une méthode). Il faut donc d’abord mettre le sujet dans le salon. Et avant cela, on doit d’abord trouver la ville dans laquelle se trouve la maison, puis l’adresse précise et enfin trouver le salon.
Puisque toutes les villes se ressemblent, nous pouvons considérer la classe Villes. De là, vous trouvez la ville du sujet, qui est une instance de Villes, ou un objet issu de Villes. Il en est de même pour la classe Maisons.
L’itinéraire à suivre est donc le suivant : Ville > Maison > Salon > Télévision
Les lieux et objets sont séparés par un point. Le code serait donc ceci :
[note note_color=”#fceee6″]Villes(“Paris”).Maisons(“La_Maison”).Salon(“Télévision”)[/note]Dans la classe Villes, la ville se distingue des autres par son nom : Paris.
Paris est un objet créé à partir de la classe Villes, qui contient aussi bien Marseille que Bordeaux.
L’accès aux objets se fait comme suit :
[note note_color=”#fceee6″]nom_de_la_classe(“Nom de l’instance de cette classe”)[/note]Mon premier Code en VBA
Prenez un nouveau classeur Excel. Enregistrez votre classeur en le nommant “Essai”. Renommez une première feuille “Départ” et l’autre “Arrivée”.
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 :
[note note_color=”#fceee6″]Sub trajet()Application.Workbooks(“Essai”).Worksheets(“Arrivée”).Activate[/note]
On part de l’application vers l’instance Essai de la classe Workbooks
ensuite, on va à l’objet Arrivée de la classe Worksheets
[note note_color=”#fceee6″]End Sub[/note]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 sur l’application Microsoft Excel (logique) et vous êtes aussi sur le classeur “Essai”.
Le bon code est donc :
[note note_color=”#fceee6″]Sub trajet()Worksheets(“Arrivée”).Activate
End Sub[/note]
Il ne vous reste plus qu’à aller sur la feuille “Départ”, y dessiner un rectangle, faire un clic droit, y affecter votre macro et de cliquer dessus, vous serez “téléporté” vers la feuille “Arrivée”
La classe Workbooks désigne tous les classeurs ouverts.
La classe Worksheets désigne toutes les feuilles du classeur actif.
Et voilà ! Vous avez codé votre premier module en VBA !