VBA Excel : automatiser une tâche répétitive avec une macro, même sans savoir coder

VBA Excel : enregistrer une macro, lire son code et l’enregistrer au format .xlsm

Publié le : 3 novembre 2026

B
G
B

Chaque lundi, vous ouvrez le même export de commandes, mettez les en-têtes en gras, ajustez les colonnes, ajoutez un filtre, repérez les livraisons en retard et enregistrez un PDF pour votre responsable. Une macro réalise cette suite d’actions en quelques secondes, et l’enregistreur d’Excel l’écrit à votre place en VBA. Ce guide vous montre comment enregistrer votre première macro, lire et adapter son code, la lancer d’un clic et ouvrir sans risque un fichier qui en contient.

L’exemple utilisé est un export hebdomadaire fictif de commandes avec six colonnes : Date de commande (A), N° commande (B), Client (C), Montant HT (D), Livraison prévue (E) et Statut (F), qui vaut « En préparation », « Expédiée » ou « Livrée ». Les en-têtes sont en ligne 1.

Comprendre ce qu’une macro VBA peut faire à votre place

Une macro est une suite d’instructions enregistrée dans le classeur et rejouée à la demande. Ces instructions sont écrites en VBA (Visual Basic pour Applications), le langage de programmation intégré à Excel et aux autres logiciels Office sur ordinateur. VBA n’est pas le seul moyen d’automatiser Excel : choisissez l’outil selon la tâche.

OutilIdéal pourOù il fonctionneLimite principale
FormulesCalculer, tester, rechercher une valeurPartoutN’agit pas sur la mise en forme ni sur les fichiers
Power QueryImporter et nettoyer des données récurrentesExcel Windows et Mac (sources réduites sur Mac)Ne modifie pas la feuille au-delà du tableau chargé
Macro VBAEnchaîner des actions : mise en forme, export PDF, bouclesExcel sur Windows et MacNe s’exécute pas dans Excel pour le web
Office ScriptsAutomatiser un classeur en ligne, avec Power AutomateExcel pour le web, Windows et MacLicence professionnelle ou éducative requise
Formules, Power Query, VBA ou Office Scripts : quel outil pour quelle automatisation (sources : documentation Microsoft).

Si votre tâche consiste surtout à retraiter le même export chaque semaine (espaces, doublons, colonnes à séparer), Power Query dans Excel est souvent plus robuste qu’une macro. VBA prend le relais pour tout ce qui suit : mise en forme, boucles sur les lignes, export ou envoi du résultat.

Afficher l’onglet Développeur

Les commandes liées aux macros se trouvent dans l’onglet Développeur, masqué par défaut. Vous ne l’activez qu’une fois.

  1. Ouvrez Fichier › Options, puis la rubrique Personnaliser le ruban.
  2. Cochez Développeur dans la liste Onglets principaux, à droite de la fenêtre.
  3. Validez avec OK : l’onglet apparaît à droite du ruban, avec les groupes Code (Visual Basic, Macros, Enregistrer une macro) et Contrôles.

Sur Mac, le chemin passe par Excel › Préférences › Ruban et barre d’outils. L’enregistreur existe aussi en bas à gauche de la fenêtre, dans la barre d’état, sous la forme d’une petite icône.

Enregistrer votre première macro en 6 étapes

L’enregistreur note chacune de vos actions et les traduit en code. Préparez donc la séquence avant de cliquer : une erreur pendant l’enregistrement sera rejouée à chaque exécution. Ouvrez l’export de commandes, puis :

  1. Cliquez sur Développeur › Enregistrer une macro.
  2. Nommez la macro : MiseEnFormeExport, sans espace ni caractère spécial, en commençant par une lettre.
  3. Attribuez un raccourci : tapez M dans la case Touche de raccourci en maintenant Maj, ce qui donne Ctrl+Maj+M. Un raccourci avec une simple lettre remplacerait un raccourci d’Excel, comme Ctrl+C.
  4. Choisissez l’emplacement dans Enregistrer la macro dans : Ce classeur pour une macro liée à ce fichier, ou Classeur de macros personnelles pour la retrouver dans tous vos fichiers. Excel crée alors un classeur masqué, PERSONAL.XLSB, ouvert à chaque démarrage.
  5. Réalisez les actions : sélectionnez A1:F1, mettez en gras et colorez le fond, appliquez le format monétaire à la colonne D, ajustez la largeur des colonnes A à F, puis Données › Filtrer.
  6. Cliquez sur Développeur › Arrêter l’enregistrement.

Par défaut, l’enregistreur note des références absolues : il agira toujours sur A1:F1. Pour qu’une macro agisse à partir de la cellule sélectionnée, activez Développeur › Utiliser les références relatives avant de commencer. La procédure du classeur de macros personnelles est décrite par Microsoft dans sa page Créer et enregistrer toutes vos macros dans un classeur unique.

Enregistrer le classeur au format .xlsm

Un classeur .xlsx ne peut pas contenir de macro. Si vous l’enregistrez dans ce format, Excel vous prévient que le code sera supprimé. Passez par Fichier › Enregistrer sous et choisissez le type Classeur Excel (prenant en charge les macros) (*.xlsm).

ExtensionContient des macrosUsage
.xlsxNonClasseur standard, à privilégier pour diffuser des données
.xlsmOuiClasseur avec macros, le cas le plus courant
.xlsbOuiFormat binaire, plus compact, utilisé par PERSONAL.XLSB
.xltmOuiModèle avec macros, pour créer de nouveaux classeurs
Les formats de fichier Excel et la prise en charge des macros.

Lire et nettoyer le code dans l’éditeur Visual Basic

Cliquez sur Développeur › Visual Basic, ou appuyez sur Alt+F11 sous Windows. Dans l’Explorateur de projets, à gauche, ouvrez le dossier Modules de votre classeur, puis double-cliquez sur Module1. L’enregistreur produit un code verbeux, plein de Select et de propriétés inutiles. Une fois nettoyé, il tient en quelques lignes :

Sub MiseEnFormeExport()
    ' Met en forme l'export hebdomadaire de commandes
    With Range("A1:F1")
        .Font.Bold = True
        .Font.Color = RGB(255, 255, 255)
        .Interior.Color = RGB(31, 56, 100)
    End With
    Columns("D").NumberFormat = "#,##0.00 ""€"""
    Columns("A:F").AutoFit
    Range("A1").AutoFilter
End Sub
  • Sub … End Sub : délimite la macro. Le nom après Sub est celui qui apparaît dans la liste des macros.
  • L’apostrophe : tout ce qui la suit est un commentaire, ignoré à l’exécution. Commentez chaque bloc pour vous relire dans six mois.
  • Range et Columns : désignent une plage ou des colonnes, avec les adresses que vous utilisez dans la feuille.
  • With … End With : applique plusieurs propriétés à la même plage sans la répéter, ce qui remplace les Select de l’enregistreur.

Contrairement aux formules de la feuille, le code VBA s’écrit toujours avec des mots-clés anglais et la virgule comme séparateur, quelle que soit la langue d’Excel. Avant de tester une modification, enregistrez le fichier : une macro exécutée vide l’historique d’annulation, et Ctrl+Z ne permet pas de revenir en arrière.

Ajouter une boucle pour traiter chaque ligne

L’enregistreur ne sait pas répéter une action sur un nombre de lignes variable. C’est là qu’écrire quelques lignes de VBA devient utile. Cette macro parcourt toutes les commandes, écrit « En retard » en colonne G lorsque la livraison prévue est dépassée et que la commande n’est pas livrée, et colore la ligne :

Sub MarquerRetards()
    Dim derniereLigne As Long, i As Long
    ' Dernière ligne remplie dans la colonne A
    derniereLigne = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 2 To derniereLigne
        If Cells(i, "F").Value <> "Livrée" And Cells(i, "E").Value < Date Then
            Cells(i, "G").Value = "En retard"
            Range("A" & i & ":G" & i).Interior.Color = RGB(255, 230, 230)
        Else
            Cells(i, "G").Value = ""
            Range("A" & i & ":G" & i).Interior.ColorIndex = xlNone
        End If
    Next i
End Sub

La variable derniereLigne s’adapte à la taille de l’export, qu’il compte 40 ou 4 000 lignes. Date renvoie la date du jour, comme AUJOURDHUI dans une formule. Le test If reprend la logique d’une fonction SI dans Excel avec ET. Pour la seule coloration, une règle de mise en forme conditionnelle suffirait ; la macro se justifie parce qu’elle écrit aussi le statut et s’enchaîne avec les autres traitements.

Dernière étape de la routine du lundi, l’export en PDF dans le dossier du classeur, avec la date dans le nom du fichier :

Sub ExporterPDF()
    Dim chemin As String
    chemin = ThisWorkbook.Path & Application.PathSeparator & _
             "Commandes_" & Format(Date, "yyyy-mm-dd") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin
    MsgBox "Rapport enregistré : " & chemin
End Sub

Sub RoutineDuLundi()
    MiseEnFormeExport
    MarquerRetards
    ExporterPDF
End Sub

RoutineDuLundi appelle les trois macros dans l’ordre : un seul clic pour l’ensemble. ExporterPDF suppose un classeur déjà enregistré dans un dossier de votre ordinateur ; pour un fichier synchronisé avec OneDrive, ThisWorkbook.Path peut renvoyer une adresse web, et il est plus sûr d’indiquer un dossier fixe. La même logique s’applique à d’autres fichiers récurrents, comme préparer chaque mois l’onglet suivant d’un planning Excel.

Les macros et leur sécurisation sont abordées dans le niveau Avancé de la formation Excel CPF de CNFN (chapitres 8 à 16), puis approfondies dans le niveau Expert et IA avec une initiation à VBA, les Office Scripts et l’usage de ChatGPT et Copilot dans Excel.

Lancer la macro d’un clic

  • Depuis le ruban : Développeur › Macros (ou Alt+F8 sous Windows), sélectionnez la macro, puis Exécuter.
  • Par un raccourci : celui défini à l’enregistrement, ou ajouté ensuite via Macros › Options.
  • Par un bouton dans la feuille : Insertion › Formes, dessinez un rectangle, écrivez « Préparer le rapport », puis clic droit sur la forme › Affecter une macro. C’est la solution la plus simple pour un collègue qui ne connaît pas VBA.
  • Depuis la barre d’accès rapide : Fichier › Options › Barre d’outils Accès rapide, choisissez Macros dans la liste des commandes, puis ajoutez la vôtre.

Ouvrir un fichier qui contient des macros sans prendre de risque

Une macro peut modifier vos fichiers ou exécuter des commandes sur votre ordinateur : c’est ce qui en fait un vecteur classique de logiciels malveillants. Excel désactive donc les macros à l’ouverture et affiche un bandeau jaune Avertissement de sécurité, avec un bouton Activer le contenu.

Pour les fichiers venus d’Internet, y compris les pièces jointes d’e-mail, Microsoft va plus loin sur Windows depuis 2022 : les macros sont bloquées par défaut et un bandeau rouge Risque de sécurité s’affiche, sans bouton pour les activer. D’après la page Microsoft Les macros provenant d’Internet sont bloquées par défaut, la marche à suivre pour un fichier dont vous êtes sûr est la suivante :

  1. Fermez le fichier et enregistrez-le dans un dossier de votre ordinateur.
  2. Faites un clic droit sur le fichier › Propriétés, puis dans l’onglet Général, cochez Débloquer.
  3. Validez et rouvrez le fichier : le bandeau jaune classique réapparaît, et vous pouvez activer le contenu.

Si vous utilisez régulièrement les mêmes classeurs, déclarez leur dossier comme emplacement approuvé : Fichier › Options › Centre de gestion de la confidentialité › Paramètres du Centre de gestion de la confidentialité › Emplacements approuvés. En entreprise, ces réglages sont souvent fixés par le service informatique ; renseignez-vous avant de les modifier. Dans tous les cas, n’activez jamais les macros d’un fichier reçu d’un expéditeur inconnu.

Savoir quand passer aux Office Scripts ou à l’IA

VBA reste l’outil d’automatisation le plus complet sur ordinateur, sans licence particulière. Il ne fonctionne pas dans le navigateur : selon le support Microsoft, Excel pour le web conserve les macros d’un classeur mais ne permet ni de les exécuter, ni de les créer, ni de les modifier.

  • Office Scripts : écrits en TypeScript, ils fonctionnent dans Excel pour le web, sur Windows et sur Mac, et peuvent être déclenchés par un flux Power Automate, par exemple chaque lundi matin sans ouvrir Excel. Ils exigent une licence Microsoft 365 professionnelle ou éducative et couvrent moins de fonctions que VBA, comme l’explique la page Microsoft sur les différences entre Office Scripts et macros VBA.
  • Assistants d’IA : ChatGPT ou Copilot peuvent proposer un code VBA à partir d’une demande précise (« parcours les lignes 2 à la dernière ligne remplie et… »). Le gain de temps est réel, à condition de savoir lire le code obtenu et de le tester sur une copie du fichier.

Savoir lire du VBA reste donc utile même si vous ne l’écrivez plus vous-même. Pour savoir si votre niveau actuel vous permet d’aborder directement les macros, remplissez le formulaire de vérification des prérequis Excel.

Questions fréquentes sur VBA et les macros Excel

Quelle est la différence entre une macro et VBA ?

Une macro est une suite d’actions enregistrée pour être rejouée automatiquement dans Excel. VBA (Visual Basic pour Applications) est le langage dans lequel cette macro est écrite : quand vous utilisez l’enregistreur, Excel traduit vos clics en code VBA, que vous pouvez ensuite lire et modifier dans l’éditeur Visual Basic.

Comment activer les macros dans Excel ?

Pour un fichier dont vous connaissez la source, cliquez sur Activer le contenu dans le bandeau jaune qui s’affiche à l’ouverture. Si un bandeau rouge indique que Microsoft a bloqué les macros, le fichier provient d’Internet : fermez-le, faites un clic droit sur le fichier › Propriétés, cochez Débloquer, puis rouvrez-le. N’activez jamais les macros d’un fichier reçu d’un expéditeur inconnu.

Peut-on utiliser VBA dans Excel en ligne ?

Non. Excel pour le web ouvre et conserve les classeurs qui contiennent des macros, mais ne permet ni de les exécuter, ni de les créer, ni de les modifier : il faut ouvrir le fichier dans l’application Excel sur Windows ou Mac. Pour automatiser un classeur en ligne, Microsoft propose les Office Scripts, réservés aux abonnements professionnels et éducatifs.

Faut-il savoir programmer pour faire du VBA ?

Non pour commencer : l’enregistreur de macros produit le code à votre place, et quelques notions suffisent pour l’adapter, comme les plages de cellules, les variables et les boucles For. Une boucle ou une condition If demande ensuite un peu de pratique, mais reste à la portée d’un utilisateur d’Excel qui maîtrise déjà les formules.

ChatGPT ou Copilot peuvent-ils écrire une macro VBA ?

Oui, un assistant d’IA peut proposer un code VBA à partir d’une description précise de la tâche, des colonnes et du résultat attendu. Le code obtenu doit toutefois être lu, compris et testé sur une copie du fichier, car une macro ne s’annule pas avec Ctrl+Z et peut modifier des données sans retour arrière.

Retenez le chemin : afficher l’onglet Développeur, enregistrer une tâche simple, enregistrer le classeur en .xlsm, puis ouvrir le code pour le nettoyer et l’enrichir d’une boucle. Commencez par la tâche qui vous fait perdre le plus de temps chaque semaine, testez toujours sur une copie, et ajoutez un bouton pour vos collègues. Pour progresser méthodiquement des formules aux macros, découvrez le programme de la formation Excel CPF.

Ecrit par Emile Vardanian

Directeur du CNFN. Passionné, il forme à la création de site internet depuis 2014, essentiellement sur le CMS WordPress, favorisant l'apprentissage et l'innovation.