Excel · Macros · A3iformations

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.

Enregistrer, arrêterPremière macro
Activer le contenuSécurité
Offset, ActiveCellRelatif
Filtre, page, calculMacros utiles
1

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.

Simulateur : afficher l’onglet et le classeur de macros personnelles

Masquer, pas fermerNe fermez pas PERSONAL.XLSB avec la croix : masquez-le. À la fermeture d’Excel, acceptez d’enregistrer les modifications du classeur de macros personnelles, sinon vos nouvelles macros sont perdues.
Où est-il rangé ?Dans le dossier de démarrage XLSTART de votre profil Windows (%AppData%\Microsoft\Excel\XLSTART). Copier ce fichier sur un autre poste y transporte vos macros.
2

Enregistrer sa première macro

  1. Développeur › Enregistrer une macro (ou le petit bouton à gauche de la barre d’état).
  2. 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.
  3. Faites les manipulations une seule fois, sans hésiter : tout est enregistré, y compris les clics inutiles.
  4. Développeur › Arrêter l’enregistrement. Enregistrez le fichier au format Classeur Excel (prenant en charge les macros) .xlsm : un .xlsx perd ses macros.
  5. Pour la lancer : Alt + F8, choisissez la macro, Exécuter (ou la touche de raccourci).
Simulateur : l’enregistreur écrit le code pendant que vous travaillez
Enregistrer une macro
Actions :

    

Raccourci en minusculeCtrl + une minuscule remplace le raccourci d’Excel tant que le classeur est ouvert (Ctrl + c ne copierait plus !). Préférez une majuscule : le raccourci devient Ctrl + Maj + lettre.
Répétez à blancAvant d’enregistrer, faites les gestes une fois sans enregistrer. Le code sera plus court et plus facile à relire.
3

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.

Simulateur : cliquez sur une ligne du code pour l’expliquer

Commenter un blocDans l’éditeur, affichez la barre d’outils Édition (Affichage › Barres d’outils › Édition) : les boutons Commenter bloc et Ne pas commenter ajoutent ou retirent l’apostrophe sur toutes les lignes sélectionnées. Pratique pour désactiver une ligne sans l’effacer.
Deux macros, deux SubUn module peut contenir plusieurs macros à la suite : chaque bloc Sub … End Sub est une macro distincte, visible dans la liste Alt + F8.
4

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é.

Simulateur : que se passe-t-il à l’ouverture d’un fichier .xlsm ?
Paramètres des macros

Fichiers venus d’InternetMicrosoft bloque par défaut les macros des fichiers téléchargés ou reçus en pièce jointe (bandeau rouge « Risque de sécurité »). Si vous faites confiance à la source : clic droit sur le fichier dans l’Explorateur › Propriétés › cochez Débloquer, ou placez-le dans un emplacement approuvé.
Documents approuvésCliquer sur « Activer le contenu » fait du fichier un document approuvé : il ne sera plus signalé à la prochaine ouverture sur ce poste.
5

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.

Simulateur : même enregistrement, deux modes. Cliquez sur la cellule de départ puis exécutez

    

Le bouton reste enfoncé« Utiliser les références relatives » est un interrupteur : il reste actif jusqu’à ce que vous cliquiez de nouveau dessus, même pour les enregistrements suivants. Vérifiez son état avant chaque enregistrement.
Range(« A1 ») après Offset ?Dans 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.
6

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.

Simulateur : macro de filtre
Formation :

    

Simulateur : macro de mise en page

    

PrintCommunicationLes lignes 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.
Plage en durLa plage filtrée est notée en dur ($A$1:$D$11). Si le tableau s’agrandit, mettez les données sous forme de tableau ou remplacez-la par Range("A1").CurrentRegion.
7

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.

Simulateur : tapez une formule, l’enregistreur la traduit

    

Noms anglais, virgulesEn VBA, les fonctions sont en anglais (SOMME = SUM, SI = IF, MOYENNE = AVERAGE) et les arguments sont séparés par des virgules. Les guillemets d’un texte sont doublés dans le code : ""Remise"".
Plus lisibleVous pouvez remplacer la ligne par Range("D2:D11").Formula = "=B2*C2" : une seule ligne, formule en A1, recopiée automatiquement sur toute la plage.
8

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.

Simulateur : affectez une macro à chaque bouton, puis cliquez

Contrôles de formulaire ou ActiveX ?Pour lancer une macro, prenez les contrôles de formulaire : simples, stables et compatibles. Les contrôles ActiveX, plus riches, se programment en VBA et ne fonctionnent pas sur Mac.
Autres déclencheursUne macro peut aussi être ajoutée à la barre d’outils Accès rapide ou à un groupe personnalisé du ruban (liste « Macros » dans les options).
Exercice : automatiser le suivi des ventes de formations

Classeur d’exercice (Énoncé et Corrigé VBA)

  1. Affichez l’onglet Développeur. Enregistrez le classeur sous ventes-macros.xlsm.
  2. 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.
  3. Macro CalculTotal : en F4, =D4*E4 recopiée jusqu’à F23, puis en F24 la somme. Contrôle : total 24 990 €.
  4. Macro FiltrerExcel (colonne Formation = Excel, 7 lignes) et macro ToutAfficher.
  5. Macro MiseEnPageImpression : paysage, 1 page en largeur, ligne 3 répétée, pied de page « Page &P sur &N ».
  6. En références relatives, macro BlocSignature qui écrit « Visa : », « Date : » et « Formateur : » sous la cellule active.
  7. 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é.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français