Chapitre Votre première macro VBA Objectifs À la fin de ce chapitre, le lecteur sera en mesure : d expliquer la structure d un programme VBA; d exécuter un programme VBA; d utiliser des fenêtres de dialogue simples. 7
VBA est intégré à de nombreuses applications. Malgré ce fait, l'environnement qui permet de développer des macros (ou programmes) VBA est commun à toutes ces applications. Nous avons donc décidé de choisir Excel de Microsoft pour illustrer l'utilisation de VBA. Dans ce chapitre, le lecteur sera invité à écrire sa première macro VBA. Pour ce faire, l environnement permettant de développer des applications VBA est présenté. Par la suite, la structure d une macro VBA est expliquée avant de décrire les étapes de son exécution. Environnement de développement Avant de pouvoir créer des applications VBA, il est nécessaire de connaître l environnement de développement. Visual Basic Editor est l environnement de développement de référence intégré à Excel. Pour atteindre Visual Basic Editor, il suffit d aller dans l'onglet Développeur et cliquer sur Visual Basic. La figure suivante présente l environnement de développement Visual Basic Editor. Figure.: Visual Basic Editor 8
Structure d une macro VBA Dans cette section, l écriture d une première macro permettra de comprendre la structure de celle-ci. Exemple. Écrire une macro qui affiche le message «Bonjour à tous!» dans la cellule A. Avant de taper la macro suivante, il faut démarrer l environnement de développement, puis insérer un nouveau module (menu : Insertion/Module). 4 Sub Exemple() ' Ceci est votre première macro VBA [A] = "Bonjour à tous!" La première ligne de cette macro est, en fait, l'entête d un sous-programme. En effet, l ajout d un module (ou d une macro) est considéré par VBA comme l ajout d'un sous-programme. La ligne n est qu un commentaire. Un commentaire commence par un et va occuper toute la ligne. La ligne permet d ajouter le texte «Bonjour à tous!» dans la cellule A. L utilisation du à la ligne 4, indique que le sous-programme se termine. Exécution d une macro VBA Avant de poursuivre, exécutons notre première macro. À partir de l environnement Visual Basic Editor cliquer sur le bouton. Il suffit de regarder le classeur actif pour vérifier si le message «Bonjour à tous!» s est bien affiché dans la cellule A. Messages d erreur de l interpréteur Réussir, sans erreur, l exécution d une macro peut sembler fastidieux. En effet, une simple erreur portant sur l utilisation d une parenthèse générera un message d erreur très peu explicite. Suite d'instructions exécutables à partir de n'importe quel point d'un programme, distincte du programme principal qui l'appelle. 9
Exemple. L erreur suivante provient de l omission du crochet fermant après A. Fenêtre de dialogue À l aide de VBA, il est possible de créer des interfaces graphiques impressionnantes en un temps relativement court. Plusieurs aspects de la création des interfaces utilisateurs seront traités ultérieurement. Dans cette section, un exemple de macro utilisant une fenêtre de dialogue simple est présenté. Exemple. Écrire une macro qui affiche le message «Bonjour le monde» dans une fenêtre de dialogue.. Insérer un nouveau module : Insertion/Module;. Taper la macro suivante: 4 Sub Exemple() ' Ceci est votre deuxième macro VBA MsgBox ("Bonjour le monde"). Exécuter la macro et la fenêtre suivante devrait apparaître: L'utilisation de MsgBox permet d ouvrir une fenêtre qui affiche un message simple spécifié par le programmeur. MsgBox ("message") 0
où "message" est une chaîne de caractères avec le message à afficher. Exemple.4 Écrire une macro qui affiche dans la cellule A un message de salutation personnalisé.. Insérer un nouveau module : Insertion/Module;. Taper la macro suivante: Sub Exemple() [A] = "Bonjour " & InputBox("Votre Nom") & "!". Exécuter la macro et la fenêtre suivante devrait apparaître: L'utilisation de InputBox permet d ouvrir une fenêtre qui affiche un message simple spécifié par le programmeur. La fenêtre dispose aussi d une zone de texte qui permet à l utilisateur du programme de taper une chaîne de caractères. La chaîne de caractères est retournée lorsque le bouton OK est pressé. InputBox("message") où "message" est une chaîne de caractères avec le message à afficher.
Exercices Exercice. Démarrer l'environnement de développement, insérer un nouveau module (Insertion/Module) puis taper la macro suivante: Sub Exercice() [A] = "bla bla..." Que fait cette macro? Exercice. Écrire une macro qui affiche le message "bla bla..." dans une fenêtre de dialogue. Exercice. Écrire une macro qui lit un message à l'aide d'une fenêtre de dialogue (voir la figure suivante) et l'affiche dans la cellule A. Exercice.4 Écrire une macro qui demande à l'usager une dimension en pouce, insérer dans la cellule A la dimension, ajouter dans la cellule A une formule qui permet de convertir en centimètre la dimension et afficher le contenu de la cellule A dans une boite de dialogue.
Exercice.5 Démarrer l'environnement de développement, insérer un nouveau module (Insertion/Module) puis taper la macro suivante: 4 5 6 7 8 9 0 Sub Exercice5() Dim DimPouce As Double Dim DimCm As Double DimPouce = InputBox("Dimension en Pouce") DimCm = DimPouce *.54 MsgBox (DimCm & " centimètre(s)") Que fait cette macro? Quelle est la différence entre la macro de l'exercice.4 et celle de l'exercice.5?