L’enregistreur de macros Excel : première macro, sécurité, références relatives et boutons
Une macro rejoue automatiquement une suite d’actions : mise en forme, filtre, mise en page, calcul. L’enregistreur de macros écrit le code VBA à votre place pendant que vous travaillez. Cette page vous guide de l’onglet Développeur jusqu’au bouton qui lance la macro, avec un simulateur par étape : vous voyez le code se construire sans risque pour vos fichiers. Pour afficher les onglets et personnaliser le ruban, voir aussi personnaliser l’interface d’Excel.
Onglet Développeur et classeur de macros personnelles
L’onglet Développeur regroupe tout ce qui concerne les macros, mais il est masqué par défaut. Pour l’afficher : Fichier › Options › Personnaliser le ruban, cochez Développeur dans la liste de droite, puis OK. Son groupe Code contient Visual Basic (Alt + F11), Macros (Alt + F8), Enregistrer une macro, Utiliser les références relatives et Sécurité des macros. Sans cet onglet, Affichage › Macros permet déjà d’enregistrer et d’exécuter.
Le classeur de macros personnelles (PERSONAL.XLSB) est un classeur caché ouvert à chaque démarrage d’Excel : une macro qui y est enregistrée est disponible dans tous vos classeurs. Il est créé la première fois que vous choisissez « Classeur de macros personnelles » à l’enregistrement. Pour le voir ou le cacher : Affichage › Fenêtre › Afficher ou Masquer.
XLSTART de votre profil Windows (%AppData%\Microsoft\Excel\XLSTART). Copier ce fichier sur un autre poste y transporte vos macros.Enregistrer sa première macro
- Développeur › Enregistrer une macro (ou le petit bouton à gauche de la barre d’état).
- Donnez un nom (commence par une lettre, sans espace : lettres, chiffres et _), une touche de raccourci facultative, l’emplacement (Ce classeur, Nouveau classeur, Classeur de macros personnelles) et une description. OK : l’enregistrement démarre.
- Faites les manipulations une seule fois, sans hésiter : tout est enregistré, y compris les clics inutiles.
- Développeur › Arrêter l’enregistrement. Enregistrez le fichier au format Classeur Excel (prenant en charge les macros)
.xlsm: un.xlsxperd ses macros. - Pour la lancer : Alt + F8, choisissez la macro, Exécuter (ou la touche de raccourci).
Début et fin d’une macro, commentaires
Ouvrez l’éditeur Visual Basic (Alt + F11) : la macro se trouve dans un module (Module1) du projet du classeur. Chaque macro commence par Sub Nom() et se termine par End Sub ; tout ce qui est entre les deux s’exécute de haut en bas. Une ligne qui commence par une apostrophe ' est un commentaire : affiché en vert, il n’est jamais exécuté et sert à expliquer le code.
Sub … End Sub est une macro distincte, visible dans la liste Alt + F8.Les paramètres de sécurité
Une macro peut tout faire, y compris du mal : Excel filtre donc les classeurs qui en contiennent. Réglage : Développeur › Sécurité des macros (ou Fichier › Options › Centre de gestion de la confidentialité › Paramètres du Centre de gestion de la confidentialité › Paramètres des macros). Le réglage conseillé est celui par défaut : désactiver avec notification. Pour vos propres dossiers de travail, ajoutez plutôt un emplacement approuvé.
Les références relatives
Par défaut, l’enregistreur note des adresses absolues : Range("B2").Select. La macro travaille donc toujours au même endroit. Activez Développeur › Utiliser les références relatives avant de cliquer dans la feuille : l’enregistreur note alors des déplacements à partir de la cellule active, ActiveCell.Offset(1, 0) = une ligne plus bas, même colonne. La macro s’exécute là où se trouve le curseur.
ActiveCell.Offset(1, 0).Range("A1").Select, le Range("A1") désigne la première cellule de la zone décalée, pas la cellule A1 de la feuille. On peut le supprimer : ActiveCell.Offset(1, 0).Select.Macros de filtre et de mise en page
Deux usages très courants. Filtre : cliquez dans le tableau, Données › Filtrer, puis choisissez les critères : l’enregistreur écrit une ligne AutoFilter par colonne filtrée, et ShowAllData quand on efface les filtres. Mise en page : Mise en page › Orientation, Titres à imprimer, Mise à l’échelle… L’enregistreur produit un bloc With ActiveSheet.PageSetup qui liste toutes les propriétés ; ne gardez que celles que vous avez modifiées.
Application.PrintCommunication = False puis True encadrent le bloc : Excel envoie tous les réglages à l’imprimante en une seule fois, ce qui accélère nettement la macro.$A$1:$D$11). Si le tableau s’agrandit, mettez les données sous forme de tableau ou remplacez-la par Range("A1").CurrentRegion.Macro de calcul
Quand vous tapez une formule pendant l’enregistrement, Excel l’écrit en anglais et en notation R1C1 : ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]". R = ligne (Row), C = colonne ; entre crochets, un déplacement relatif (C[-2] = deux colonnes à gauche) ; sans crochets, une position fixe (R1C7 = $G$1). Cette notation reste valable quelle que soit la ligne : c’est pourquoi la recopie (AutoFill) fonctionne.
""Remise"".Range("D2:D11").Formula = "=B2*C2" : une seule ligne, formule en A1, recopiée automatiquement sur toute la plage.Lancer une macro depuis un bouton de formulaire
Un bouton rend la macro accessible à tous, sans raccourci à retenir. Développeur › Insérer › Contrôles de formulaire › Bouton, tracez-le sur la feuille : la fenêtre Affecter une macro s’ouvre, choisissez la macro, OK. Clic droit sur le bouton pour modifier le texte ou changer de macro. Une forme ou une image (Insertion › Formes) fonctionne aussi : clic droit › Affecter une macro.
Exercice : automatiser le suivi des ventes de formations
Classeur d’exercice (Énoncé et Corrigé VBA)
- Affichez l’onglet Développeur. Enregistrez le classeur sous
ventes-macros.xlsm. - Macro MiseEnFormeTitre (Ctrl + Maj + T, dans ce classeur) : A1 en gras, taille 14, remplissage bleu clair, ligne 3 d’en-têtes en gras et centrée.
- Macro CalculTotal : en F4,
=D4*E4recopiée jusqu’à F23, puis en F24 la somme. Contrôle : total 24 990 €. - Macro FiltrerExcel (colonne Formation = Excel, 7 lignes) et macro ToutAfficher.
- Macro MiseEnPageImpression : paysage, 1 page en largeur, ligne 3 répétée, pied de page « Page &P sur &N ».
- En références relatives, macro BlocSignature qui écrit « Visa : », « Date : » et « Formateur : » sous la cellule active.
- Ajoutez des commentaires en tête de chaque macro, puis placez quatre boutons de formulaire au-dessus du tableau. Testez l’ouverture avec les différents paramètres de sécurité.