2.1.introduction VBA
2.1.introduction VBA
2.1.introduction VBA
François BANCQUART
By ABF
01/02/2019
SOMMAIRE
I/ Généralités ___________________________________________________________________ 2
II/ L’environnement VISUAL BASIC EDITOR ( VBE ) _____________________________________ 3
III/ Enregistrement automatique d’une macro ________________________________________ 3
Exécuter une macro en appuyant sur une touche de raccourci utilisant la touche Ctrl _____________ 7
Exécuter une macro en cliquant sur un bouton de la barre d’outils Accès rapide _________________ 8
Afficher puis exécuter une macro en cliquant sur un bouton de la barre d’outils Accès rapide ______ 9
IV/ Utilisation de l’aide __________________________________________________________ 10
V/ Rajout d’une condition ________________________________________________________ 11
VI /Macro évènementielle _______________________________________________________ 12
VII/ Mise au point des macros ____________________________________________________ 13
By ABF | I/ Généralités 1
I/ Généralités
Le langage macro d’Excel a considérablement évolué dans le temps. Dans un premier temps, il
s’agissait d’un langage de programmation propre au tableur, qui s’appelait Excel Basic, et ceci
jusqu’à Excel 4.
Depuis la version 5, le langage est une déclinaison de Visual Basic, qui s’appuie sur le noyau
Excel. Depuis Office 2000, il est maintenant commun à toutes les applications d’Office : Excel,
Word, Access, Powerpoint, Frontpage …
Autre particularité : son environnement, véritablement professionnel. Jusqu’à Excel 4, les macros
s’affichaient dans des feuilles Excel intitulées Module. Depuis Excel 5, les macros sont
développées dans un environnement dédié, qui s’appelle Visual Basic Editor.
Les macros usuelles s’écrivent et se créent dans ce que l’on appelle un Module.
By ABF | I/ Généralités 2
II/ L’environnement VISUAL BASIC EDITOR ( VBE )
À partir d’un classeur vierge, appuyez sur Alt F11 pour intégrer l’environnement macros. Vous
obtenez alors l’écran suivant :
✓ VBA Project : cette fenêtre décrit le contenu des classeurs ouverts et des macros
complémentaires (suffixe xla)
✓ Propriétés : cette fenêtre affiche les propriétés de l’objet sélectionné dans la fenêtre
VBA Project. Ici, les propriétés de Feuil1. On peut ainsi cacher à ce niveau une ou
plusieurs feuilles, en cliquant dans la propriété Visible.
✓ Une fenêtre vide à droite, qui contiendra le code Visual Basic de votre macro.
Ici, nous constatons dans la fenêtre VBA Project que notre classeur intitulé
Intoduction_VBA_I.xlsm se compose de 3 feuilles de calcul. La zone intitulée ThisWorkbook est
une feuille virtuelle dans laquelle nous positionnerons des macros particulières, nommées macros
évènementielles, qui s’exécuteront quelle que soit la feuille active, car nous verrons plus loin que
nous avons la possibilité de dédier des macros spécifiquement à une feuille, et faire en sorte
qu’elles s’exécutent à des moments bien précis : lorsque je sélectionne la feuille par son onglet,
quand je change de cellule, lorsque je change le contenu d’une cellule. C’est ce que l’on appelle un
évènement.
Pour activer le développeur, cliquez sur Fichier – Options – Personnaliser le ruban – Activez
l’onglet Développeur
Une fois l’onglet Développeur activé, cliquez sur le menu Développeur – Enregistrer une macro.
Excel ouvre alors une boîte de dialogue, comme suit :
Excel nous propose enfin d’enregistrer par défaut cette macro dans le classeur actif, mais aussi dans
un autre classeur, et enfin dans un classeur de macros personnelles. Cette dernière possibilité,
maintenant dépassée (cf. suite du cours), permet de rendre une macro commune à tous les
classeurs, en générant en fait un classeur, intitulé PERSO.xlsx, qui s’ouvrira alors automatiquement
dès que nous irons sur Excel.
Nous allons valider telle quelle ces options en cliquant sur OK. Dorénavant, toutes nos
manipulations vont être enregistrées, bonnes comme mauvaises !! Rassurez-vous, nous aurons la
possibilité d’effectuer par la suite toutes les corrections éventuelles.
✓ Allez en A1
✓ Copiez
✓ Allez en A5
✓ Collez
✓ Esc pour vider le presse-papier
✓ Revenez en C1
Vous noterez dans la fenêtre VBA project qu’Excel vous a généré un répertoire Modules, ouvrez-le
et positionnez-vous sur Module1.
Excel vous affiche en plus par rapport à la fois précédente le code VBA dans une fenêtre à droite
des 2 fenêtres VBA Project et Propriétés.
Les expressions sont séparées par des points, et la particularité de VBA, comme tout langage objet,
est de se lire de gauche à droite.
Il est quelque peu verbeux et nous allons voir que nous pouvons réduire considérablement le code.
Ainsi, lorsqu’une instruction se termine par Select et que la suivante débute par Selection, nous
pouvons résumer les deux instructions en une seule, en éliminant Select et Selection.
De même, nous n’avons pas à nous positionner au préalable ni sur A1, ni ensuite sur A5 pour
effectuer notre copier-coller. Positionnez-vous à la fin de votre 1ère instruction, et tapez un espace.
Excel vous propose de taper directement la destination, soit A5.
Toutes les autres lignes sont désormais inutiles, et votre macro se résume ainsi en une seule ligne.
b. Dans la catégorie Paramètres des macros, sous Paramètres des macros, cliquez
sur Activer toutes les macros (non recommandé ; risque d’exécution de code
potentiellement dangereux), puis cliquez sur OK.
Conseil : Vous pouvez également appuyer sur les touches Ctrl+F8 pour exécuter la
macro. Vous pouvez interrompre l’exécution de la macro en appuyant sur Échap.
b. Pour exécuter une macro dans un module touche de raccourci signature numérique
emplacement approuvé VBA (Visual Basic pour Applications), cliquez sur
Modifier, puis, dans le menu Exécution, cliquez sur Exécuter Sub/UserForm
ou appuyez sur la touche F5.
Exécuter une macro en appuyant sur une touche de raccourci utilisant la touche Ctrl
5. Dans la zone Touche de raccourci, entrez les lettres minuscules ou majuscules que vous
souhaitez utiliser avec la touche Ctrl.
Remarque : La touche de raccourci remplace une touche de raccourci Excel par défaut
lorsque le classeur contenant la macro est ouvert.
Pour obtenir une liste des touches de raccourci utilisant la touche Ctrl qui sont déjà
affectées dans Excel, voir l’article Touches de raccourci et de fonction dans Excel.
Exécuter une macro en cliquant sur un bouton de la barre d’outils Accès rapide
Pour ajouter un bouton à la barre d’outils Accès rapide qui exécutera une macro, procédez comme
suit :
1. Cliquez sur l’onglet Fichier, sur Options, puis sur Barre d’outils Accès rapide.
2. Dans la liste Choisir les commandes dans les catégories suivantes, sélectionnez Macros.
3. Dans la liste, cliquez sur la macro que vous avez créée, puis sur Ajouter.
4. Pour modifier l’image du bouton de la macro, sélectionnez la macro dans la zone à laquelle
elle a été ajoutée, puis cliquez sur Modifier.
5. Sous Symbole, cliquez sur l’image du bouton que vous souhaitez utiliser.
6. Pour modifier le nom de la macro qui s’affiche lorsque vous positionnez le pointeur sur le
bouton, dans la zone Nom complet, tapez le nom que vous souhaitez utiliser.
7. Cliquez sur OK pour ajouter le bouton de macro dans la barre d’outils Accès rapide.
8. Dans la barre d’outils Accès rapide, cliquez sur le bouton de macro que vous venez
d’ajouter.
1. Cliquez sur l’onglet Fichier, sur Options, puis sur Barre d’outils Accès rapide.
2. Dans la liste Choisir les commandes dans les catégories suivantes, sélectionnez Toutes les
commandes.
3. Dans la liste, cliquez sur la macro que vous avez créée, puis sur Afficher les macros.
4. Une fois l’icône Afficher les macros présente dans la barre d’outils accès rapide, cliquez
sur Afficher les macros puis sur exécuter.
Une des meilleures façons d’apprendre le langage macro consiste à naviguer dans l’aide. Double-
cliquez sur l’instruction Copy et cliquez sur F1. Excel ouvre l’aide, affiche la page concernée par
l’instruction sélectionnée, vous affiche la syntaxe, et vous propose d’afficher des exemples ou de
naviguer par des lignes hypertextes.
Nous pouvons utiliser également l’aide en cliquant sur le bouton Explorateur d’objets.
Vous pouvez alors préciser la bibliothèque dans laquelle vous souhaitez circonscrire votre
recherche, et préciser l’expression.
Nous allons maintenant compliquer notre macro en précisant que nous ne ferons un copier-coller de
A1 en A5 que si la valeur de A1 est supérieure à 1000, sinon nous effaçons le contenu de A5.
Cette instruction peut s’écrire sur une seule ligne à condition qu’il n’y ait qu’une seule instruction
après le Then et qu’une seule après le Else, sinon retour à la ligne après le Then ainsi qu’après le
Else. L’instruction If s’achèvera alors par End If.
D’aucuns, dans un souci de clarté, choisiront systématiquement cette dernière solution. Pour suivre
les préconisations de la programmation structurée, nous décalerons les instructions figurant à
l’intérieur du If.
Votre macro devient dès lors :
Nous pouvons également lancer une macro depuis un bouton que nous créerons dans la feuille de
travail. Il nous faut ouvrir la barre d’outils Insérer contrôle de formulaire via le menu
Développeur, cliquez sur l’icône Bouton, et dessinez-le sur la feuille.
1001
1001
La macro s’exécute alors. Vérifiez son bon fonctionnement en saisissant 2000 en A1.
VI /Macro évènementielle
Ne serait-il pas intéressant de pouvoir exécuter cette macro uniquement du fait de saisir un chiffre
en A1, et non plus en cliquant sur le bouton précédemment créé ? Une fonctionnalité nous le
permet : il s’agit des macros évènementielles.
Revenez dans l’environnement VBA, double-cliquez dans Feuil1 dans la fenêtre VBA Project.
Vous ouvrez ainsi la fenêtre de code propre à cette feuille de travail, fenêtre vide pour le moment.
Tapez le code suivant :
puis Entrée
Vous venez de créer une macro qui va s’exécuter lorsque nous cliquerons sur l’onglet de la feuille,
c'est-à-dire lorsque nous activerons la feuille. Il s’agit de l’évènement ACTIVATE.
Vous noterez que le haut de la fenêtre de code intègre 2 combo boxes, et que celle de droite intègre
maintenant tous les évènements liés à l’objet WORKSHEET. Ouvrez-la.
Pour éviter de retaper le code contenu dans la Macro1, nous allons appeler cette Macro1. Notre
macro évènementielle devient alors :
Testez-la et admirez !
À noter que telle quelle, cette macro va s’exécuter à chaque changement de cellule.
Nous avons développé ici une macro relativement courte, dont la mise au point ne pose pas de
problème particulier. Il peut néanmoins être intéressant, dans le cas d’une macro beaucoup plus
longue, de conserver la maîtrise de l’exécution de la macro, autrement dit faire en sorte que les
différentes instructions s’exécutent sur ordre ou à l’initiative du développeur. C’est ce que nous
permet de faire le mode pas à pas, ainsi que le point d’arrêt.
Pour conserver la maîtrise du déroulement, appuyez sur la touche F8, en ayant toujours le curseur à
l’intérieur de Macro1. La 1ère ligne est alors surlignée de jaune, avec un repère dans la marge.
Appuyez sur F8 et constatez ce qui se passe, ceci jusqu’à la fin de la macro.
Vous pouvez ainsi suivre visuellement le bon fonctionnement de votre macro, en particulier au
niveau de la condition If. Nous aurions pu procéder de même par le menu Débogage - Pas à pas
détaillé.
Il est possible d’attraper la flèche jaune dans la marge et de la remonter à l’instruction de votre
choix, après avoir modifié interactivement du code ou une valeur dans votre feuille de travail.