Pourquoi automatiser ?
Chaque lundi, vous importez un export, mettez les en-têtes en gras, ajustez les colonnes, ajoutez un total et envoyez le fichier. Ces gestes répétitifs prennent du temps et provoquent des oublis. Une macro enregistre une suite d’actions et la rejoue en un clic. Dans Excel pour Windows et pour Mac, les macros sont écrites en VBA (Visual Basic for Applications) ; dans Excel pour le web, on utilise les Office Scripts (leçon 4).
Avant d’écrire une macro, demandez-vous si un outil sans code ne suffit pas : Power Query (cours XL5) pour importer et nettoyer, les tableaux structurés et les fonctions dynamiques (cours XL4) pour des calculs qui suivent les données. La macro est utile pour enchaîner des actions : mettre en forme, créer des feuilles, imprimer, copier vers un autre classeur.
Afficher l’onglet Développeur
Fichier > Options > Personnaliser le ruban, cochez Développeur dans la liste de droite. L’onglet contient Enregistrer une macro, Macros (Alt+F8, la liste des macros), Visual Basic (Alt+F11, l’éditeur) et les contrôles de formulaire (boutons).
Enregistrer une macro
Développeur > Enregistrer une macro :
- Nom : sans espace ni accent, commençant par une lettre (
MettreEnFormeVentes) ; - Touche de raccourci : facultative ; préférez Ctrl+Maj+lettre pour ne pas écraser un raccourci d’Excel (Ctrl+C, par exemple) ;
- Enregistrer la macro dans : Ce classeur (la macro voyage avec le fichier), Nouveau classeur, ou Classeur de macros personnelles (
PERSONAL.XLSB, disponible dans tous vos classeurs sur ce poste) ; - Description : à quoi sert la macro.
Réalisez ensuite les actions, puis Arrêter l’enregistrement. Tout est enregistré, y compris vos clics hésitants : préparez la séquence avant de lancer l’enregistreur.
Références absolues ou relatives
Par défaut, l’enregistreur note des adresses fixes : cliquer sur A1 produit Range("A1").Select. Si vous activez Utiliser les références relatives avant l’action, il note un déplacement depuis la cellule active : ActiveCell.Offset(1, 0).Select. Choisissez :
- absolu pour agir toujours au même endroit (mettre en forme la ligne d’en-têtes) ;
- relatif pour répéter une action là où se trouve le curseur (formater la ligne courante).
Lire le code produit
Alt+F11 ouvre l’éditeur VBA. Dans l’explorateur de projets, à gauche, le dossier Modules contient Module1 avec votre macro :
Sub MettreEnFormeVentes()
'
' MettreEnFormeVentes Macro
' En-têtes en gras et colonnes ajustées
'
Range("A1:F1").Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.Color = 15773696
End With
Columns("A:F").Select
Selection.Columns.AutoFit
Range("A1").Select
End Sub
On reconnaît la structure : Sub Nom() … End Sub, des commentaires précédés d’une apostrophe, des objets (Range, Columns) dont on modifie des propriétés (Font.Bold) ou appelle des méthodes (AutoFit). Le code enregistré est verbeux : il sélectionne avant d’agir. On le simplifie en agissant directement :
Sub MettreEnFormeVentes()
Range("A1:F1").Font.Bold = True
Range("A1:F1").Interior.Color = RGB(0, 176, 240)
Columns("A:F").AutoFit
End Sub
Le résultat est identique, plus court, plus rapide et ne dépend plus de la sélection.
Exécuter et enregistrer
Pour lancer la macro : Développeur > Macros > Exécuter, le raccourci choisi, F5 dans l’éditeur (curseur dans la macro), ou un bouton (Développeur > Insérer > Bouton de formulaire, puis affecter la macro).
Un classeur .xlsx ne peut pas contenir de macros : à l’enregistrement, Excel propose de les supprimer. Choisissez Classeur Excel (prenant en charge les macros) (*.xlsm). Le format .xlsb (binaire) les accepte aussi.
Les limites de l’enregistreur
L’enregistreur ne sait pas faire de boucle (« pour chaque ligne… »), de condition (« si le montant dépasse… ») ni s’adapter à un nombre de lignes variable : il fige Range("A1:F11"). C’est un excellent outil pour découvrir le code correspondant à une action, et le point de départ des leçons suivantes, où vous écrirez vous-même ce qu’il ne peut pas produire.
Exercices
Les solutions et les tests restent sur le serveur. Dans l'espace étudiant, ton code est exécuté et corrigé, et le tuteur donne des indices avant la solution.
Enregistrer une mise en forme
Saisissez ces données à partir de la cellule A1 de la feuille
Ventes(ou collez-les en colonne A puis utilisez Données > Convertir, séparateur point-virgule) :Date;Commercial;Region;Produit;Quantite;PrixUnitaire 05/01/2026;Alice;Nord;Clavier;10;25 07/01/2026;Bruno;Sud;Souris;25;12 12/01/2026;Alice;Nord;Ecran;4;180 15/01/2026;Chloe;Est;Clavier;8;25 20/01/2026;Bruno;Sud;Ecran;3;180 22/01/2026;Chloe;Est;Souris;30;12 03/02/2026;Alice;Nord;Souris;15;12 09/02/2026;David;Ouest;Clavier;12;25 14/02/2026;David;Ouest;Ecran;5;180 18/02/2026;Bruno;Sud;Clavier;6;25- Affichez l’onglet Développeur.
- Enregistrez dans Ce classeur une macro
MettreEnFormeVentes, raccourci Ctrl+Maj+M, qui : metA1:F1en gras sur fond bleu, applique le formatjj/mm/aaaaà la colonne A, ajuste la largeur des colonnes A à F. - Ouvrez l’éditeur (Alt+F11) et supprimez les lignes
Select/Selectionen agissant directement sur les plages. - Effacez la mise en forme de la feuille, relancez la macro avec le raccourci, puis enregistrez le classeur sous
ventes_macros.xlsm.
- Le module contient Sub MettreEnFormeVentes() sans aucune instruction Select
- Ctrl+Maj+M reproduit la mise en forme sur la feuille effacée
- Le fichier est enregistré au format .xlsm et la macro est toujours présente après réouverture
Absolu ou relatif
Dans le même classeur, enregistrez deux macros qui écrivent le texte
Vuet mettent la cellule en vert :MarquerAbsolu, enregistrée avec la cellule active enH2, références absolues ;MarquerRelatif, enregistrée avec la cellule active enH2, Utiliser les références relatives activé, en finissant par un déplacement d’une cellule vers le bas.
Sélectionnez
H5, lancez chaque macro, puis lisez leur code.- Le code de MarquerAbsolu contient Range("H2")
- Le code de MarquerRelatif contient ActiveCell et Offset(1, 0)
- Lancée depuis H5, MarquerAbsolu écrit en H2, MarquerRelatif écrit en H5 puis sélectionne H6
Format de fichier
Vous enregistrez un classeur contenant une macro au format .xlsx. Que se passe-t-il ?
- La macro est convertie en formule
- Excel avertit que le code VBA ne peut pas être enregistré dans ce format ; si vous confirmez, les macros sont perdues
- La macro est conservée mais désactivée
- Le fichier devient .xlsm automatiquement
Quiz de fin de leçon
Où active-t-on l’onglet Développeur ?
- Affichage > Afficher
- Fichier > Options > Personnaliser le ruban
- Révision > Protéger
Que ne sait pas faire l’enregistreur de macros ?
- Mettre en gras
- Écrire une boucle sur un nombre de lignes variable
- Trier une plage
Où une macro est-elle disponible dans tous vos classeurs sur votre poste ?
- Dans Ce classeur
- Dans le Classeur de macros personnelles (PERSONAL.XLSB)
- Dans un modèle .xltx
La suite du cours
- Les bases de VBA : objets, variables et cellules20 min
- Boucles et conditions en VBA20 min
- Office Scripts : automatiser Excel pour le web en TypeScript20 min
- Sécurité des macros et code robuste15 min