Programmation de macros dans Excel : le guide complet étape par étape

Dernière mise à jour: 29 Août 2025
  • Les macros automatisent les actions répétitives dans Excel, réduisant ainsi les erreurs et gagnant du temps.
  • Vous pouvez les créer avec l'enregistreur et les améliorer avec VBA pour plus de flexibilité.
  • Utilisez des références relatives pour prendre en compte différentes plages et éviter les étapes redondantes.
  • Enregistrez au format .xlsm et gérez la sécurité pour exécuter des macros en toute confiance.

Les macros dans Excel et comment les programmer

Si vous effectuez régulièrement les mêmes tâches dans Excel, les macros sont vos meilleurs alliés pour gagner du temps. Elles vous permettent d'automatiser des séquences d'actions complètes (découvrez la programmation VBA ), de la mise en forme à l'importation de données en passant par les calculs, et de les déclencher à tout moment d'un simple clic ou raccourci clavier.

Lorsque vous créez une macro, Excel enregistre vos clics et frappes au clavier et les reproduit fidèlement. Vous pouvez ensuite modifier le code pour affiner l'exécution et consulter la documentation Excel . Il est courant de commencer par l'enregistreur de macros, puis de l'affiner avec VBA, ce qui permet un meilleur contrôle, une plus grande flexibilité et l'absence d'erreurs dues à l'inattention.

Qu'est-ce qu'une macro exactement dans Excel ?

Une macro est une liste d'instructions qu'Excel exécute dans un ordre précis . Elle peut être aussi simple que d'appliquer un style de pourcentage ou aussi complexe que de préparer un rapport avec des tableaux croisés dynamiques , de le mettre en forme, de créer des feuilles de calcul et d'envoyer un e-mail dans Outlook. Les macros sont enregistrées dans votre classeur et peuvent être exécutées à tout moment.

Vous n'avez pas besoin de savoir programmer pour commencer : l'enregistreur traduit vos actions en code VBA. Toutefois, quelques connaissances en VBA vous permettront de créer des fonctions personnalisées, des formulaires et même des mini-applications dans Excel.

Pourquoi utiliser des macros ? De réels avantages

L'objectif principal d'une macro est d'éviter les tâches répétitives et de minimiser les erreurs . Si vous rédigez le même rapport chaque mois, une macro vous épargnera les étapes fastidieuses et vous permettra de vous concentrer sur l'essentiel.

Ses avantages incluent un gain de temps, une exécution rigoureuse (sans étapes oubliées) et la possibilité de créer des raccourcis et des boutons pour accélérer les processus . Si vous n'utilisez Excel qu'occasionnellement, l'investissement n'est peut-être pas justifié ; mais si vous l'utilisez quotidiennement, vous constaterez la différence dès le premier jour.

Activer l'onglet Développeur (Windows et Mac)

L'onglet Développeur est masqué par défaut. Sous Windows, cliquez avec le bouton droit sur le ruban et sélectionnez « Personnaliser le ruban ». Cochez « Développeur » et cliquez sur OK. L'onglet Développeur apparaîtra alors à côté de l'onglet Affichage.

Sur un Mac, accédez à Excel > Préférences > Barres d'outils et ruban. Sous « Onglets principaux », sélectionnez « Développeur » et enregistrez. Vous aurez ainsi accès à l'enregistreur, à VBA et aux contrôles . Si vous débutez avec Excel, consultez le guide de base pour vous familiariser avec le ruban et ses options.

Comment créer des macros avec l'enregistreur

L'enregistreur est idéal pour débuter. Dans Développeur > Enregistrer une macro (ou Alt+T+M+R sous Windows), attribuez-lui un nom descriptif. Attention : le nom doit commencer par une lettre, sans espaces ni symboles.

Choisissez l'emplacement d'enregistrement : « Ce classeur » convient dans la plupart des cas. Si vous souhaitez le conserver en permanence, sélectionnez « Classeur de macros personnelles » ; Excel le créera et l'enregistrera alors sous le nom Personal.xlsb , qui s'ouvre en mode caché avec Excel.

Vous pouvez ajouter un raccourci. Pour éviter les conflits (par exemple, la perte du raccourci Ctrl+Z), il est recommandé d'utiliser les raccourcis Ctrl+Maj. Vous pouvez également ajouter une brève description (très utile si vous avez de nombreuses macros).

Cliquez sur OK et effectuez les actions à enregistrer. Par exemple : sélectionnez A1 et appliquez le format « Pourcentage ». Évitez les clics ou les modifications de sélection inutiles qui ne font pas partie du processus prévu, car l’enregistreur enregistre presque tout.

  Guide complet de la recherche en temps réel dans Laravel

Une fois l'enregistrement terminé, arrêtez-le. Pour l'exécuter, accédez à Développeur > Macros (ou appuyez sur Alt+F8), sélectionnez votre macro et cliquez sur Exécuter. Excel répétera alors les étapes exactement dans le même ordre.

Exécutez, modifiez et gérez vos macros

Dans le menu Développeur > Macros (Alt+F8), vous pouvez exécuter, modifier ou supprimer des macros. Si vous choisissez Modifier, l'éditeur Visual Basic s'ouvre avec le code enregistré, que vous pouvez nettoyer et optimiser (il contient souvent des étapes redondantes).

L'attribution d'une macro à un bouton ou une forme est très pratique : insérez une forme, faites un clic droit > Attribuer une macro, choisissez la macro, et le tour est joué. Lorsque vous cliquerez sur la forme, la macro s'exécutera instantanément.

Pour y accéder facilement depuis la barre d'outils Accès rapide, ouvrez le menu de la barre d'outils (flèche vers le bas) > Plus de commandes > sous « Commandes disponibles dans », choisissez « Macros », ajoutez la vôtre et modifiez l'icône si vous le souhaitez. Vous disposerez ainsi d'un bouton permanent, même hors du mode développeur.

Si vous devez réutiliser la macro dans un autre classeur, vous pouvez copier le module depuis l'éditeur Visual Basic. Ouvrez l'éditeur (Alt+F11), faites glisser le module vers l'autre classeur ouvert ou utilisez l'option Exporter/Importer un fichier .bas.

Programmation de macros dans Excel avec l'éditeur Visual Basic (VBA)

Pour aller plus loin que l'enregistreur, ouvrez l'éditeur avec Alt+F11. Insérez un module (Insertion > Module) et créez votre première sous-routine. Le modèle de base est Sub Nom() … End Sub.

Par exemple, pour afficher un message et écrire une valeur dans la cellule A1, vous pouvez commencer par un exemple simple. Vous comprendrez ainsi la structure et comment appeler la macro depuis Excel (Alt+F8) ou l'associer à un bouton, en quelques lignes de code seulement.

Sub Primera_Macro()
    Range("A1").Value = "Esto de las macros mola."
    MsgBox "Hola, querido amigo."
End Sub

Voici un autre exemple rapide d'application du style pourcentage à la sélection actuelle. Cette macro reproduit ce que vous avez fait avec l'enregistreur , mais en saisissant directement le texte :

Sub FormatoPorcentaje()
    Selection.Style = "Percent"
End Sub

La combinaison idéale consiste à enregistrer le code pour gagner du temps, puis à ouvrir l'éditeur VBA pour supprimer les étapes inutiles, ajouter des variables, des conditions ou des boucles. Ainsi, vous transformez un enregistrement « littéral » en une macro robuste et réutilisable.

Références absolues et relatives

Par défaut, l'enregistreur crée des macros en mode absolu : il agit toujours sur les mêmes cellules (par exemple, B3), quelle que soit leur position lors de son exécution. Si la position des données change au cours de votre processus, ce comportement peut ne pas convenir.

Avec l'option « Utiliser des références relatives », la macro s'exécute par rapport à la cellule active au début de son exécution. Par exemple, si vous commencez la saisie dans la cellule B3 et tapez « Prénom », « Nom », etc., en vous déplaçant vers la droite, lorsqu'elle sera exécutée à partir de la cellule C4, elle saisira les mêmes informations par rapport aux cellules C4, D4, E4, etc.

Exemple typique : l’ajout de titres à un tableau qui commence tantôt en cellule B3, tantôt en cellule C5. En mode absolu, le titre s’écrirait toujours en cellule B3. En mode relatif, il s’adapterait à la cellule de départ sélectionnée.

Erreurs courantes lors de l'enregistrement des processus

Une erreur fréquente consiste à enregistrer une formule « glisser » pour, par exemple, trois lignes, en pensant qu'elle fonctionnera pour des tableaux plus longs. L'enregistreur enregistrera alors une opération équivalente à « remplir trois cellules vers le bas », et non « jusqu'à la fin du tableau ».

La solution consiste à changer d’approche : utilisez des plages dynamiques (par exemple, en détectant la dernière ligne), des boucles ou la méthode CurrentRegion, ou ajustez la macro en VBA après l’avoir enregistrée afin qu’elle s’adapte à n’importe quelle taille.

  Zoho CRM : l'outil secret des entreprises à croissance rapide

Bonnes pratiques lors de l'enregistrement

Avant d'enregistrer, répétez le processus manuellement à plusieurs reprises pour le peaufiner. Privilégiez des enregistrements courts et précis plutôt qu'un seul long ; cela facilitera leur gestion et leur assemblage.

Évitez les clics inutiles, le défilement du ruban et les sélections superflues. Veillez à ce que le nom et la description de la macro soient clairs afin que vous ou vos collègues puissiez immédiatement en identifier la fonction.

Exécutez des macros de plusieurs manières

Outre la boîte de dialogue Macros (Alt+F8), vous pouvez lancer des macros à l'aide d'une forme, d'un bouton de la barre d'outils Accès rapide ou en ouvrant le classeur. Vous pouvez même exécuter la macro depuis d'autres applications Office, ce qui vous permet d'automatiser des tâches inter-applications (par exemple, la mise à jour d'un tableau et l'envoi d'un e-mail via Outlook).

Réfléchissez bien aux raccourcis clavier : si vous assignez Ctrl+Z à une macro, vous ne pourrez plus annuler les actions effectuées dans le classeur ouvert. Il est donc recommandé d’utiliser les combinaisons Ctrl+Maj pour éviter tout conflit.

Enregistrer des classeurs avec des macros

Lorsqu'un fichier contient du code VBA, enregistrez-le au format .xlsm afin de préserver le code et de pouvoir l'exécuter. L'enregistrement au format .xlsx détruira le projet VBA . Si vous souhaitez utiliser des macros globales, utilisez le classeur de macros personnelles (Personal.xlsb).

Sécurité et activation des macros

Les macros peuvent être bloquées selon vos paramètres de sécurité. Consultez le Centre de gestion de la confidentialité pour les activer sélectivement et n'autorisez jamais les macros provenant de sources inconnues. Comprendre votre niveau de sécurité vous permet d'équilibrer protection et productivité.

Attribuer des macros aux boutons, aux formes et aux contrôles

Pour permettre aux utilisateurs d'exécuter automatiquement des macros, associez une macro à un bouton, une forme ou une commande. Cliquez avec le bouton droit sur l'objet > Attribuer une macro > sélectionnez. Vous pouvez également placer une icône dans le ruban ou la barre d'outils Accès rapide et la lier à la macro.

Si vous utilisez des formulaires ou des contrôles ActiveX, vous pouvez leur attribuer des macros ou des procédures événementielles (par exemple, au clic). Cela permet de créer des interfaces plus conviviales et des processus guidés.

Exemples de macros utiles (VBA)

Ces exemples illustrent des tâches courantes. Vous pouvez les coller dans un module (Alt+F11 > Insertion > Module) et les adapter. N'oubliez pas de signer les classeurs ou d'ajuster les paramètres de sécurité si votre organisation l'exige afin de pouvoir les exécuter sans avertissement.

Copier le contenu sélectionné vers un autre emplacement sur la même feuille : Sélection.Copier Destination

Sub CopiarSeleccion()
    If TypeName(Selection) = "Range" Then
        Selection.Copy Destination:=Selection.Offset(0, 2)
    Else
        MsgBox "Selecciona un rango de celdas primero."
    End If
End Sub

Imprimer la feuille active : ActiveSheet.PrintOut

Sub ImprimirHojaActual()
    ActiveSheet.PrintOut
End Sub

Enregistrez le fichier en tant que classeur prenant en charge les macros (.xlsm) : ActiveWorkbook.SaveAs

Sub GuardarComoXlsm()
    Dim ruta As String
    ruta = ThisWorkbook.Path & Application.PathSeparator & "LibroConMacros.xlsm"
    ActiveWorkbook.SaveAs Filename:=ruta, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

Appliquer une mise en forme à une plage (adaptez la plage à vos besoins) : Avec Range(…)

Sub FormatoRango()
    With Range("A1:D10")
        .Font.Bold = True
        .Interior.Color = RGB(230, 230, 250)
        .Borders.LineStyle = xlContinuous
    End With
End Sub

Trouver une valeur dans une plage et afficher la première occurrence : Range(…).Find

Sub BuscarValor()
    Dim celda As Range
    Dim valor As String
    valor = InputBox("¿Qué valor quieres buscar?")
    If valor = "" Then Exit Sub
    Set celda = Range("A1:D1000").Find(What:=valor, LookIn:=xlValues, LookAt:=xlPart)
    If Not celda Is Nothing Then
        MsgBox "Encontrado en: " & celda.Address
        celda.Select
    Else
        MsgBox "No se encontró el valor especificado."
    End If
End Sub

Cas pratique : mise en forme en pourcentage

Enregistrement : Lancez l’enregistrement, nommez-le, choisissez son emplacement et, si vous le souhaitez, attribuez-lui un raccourci et une description. Sélectionnez les cellules et appliquez le pourcentage depuis l’onglet Accueil. Arrêtez l’enregistrement, puis relancez-le avec Alt+F8. Pour une lecture avec un code minimal, utilisez Selection.Style = "Percent" en VBA.

  Guide complet des frameworks d'IA pour agents open source

Conseil : Pendant l’enregistrement, évitez de changer de cellule inutilement. Ces mouvements de va-et-vient sont enregistrés et peuvent ralentir et corrompre la macro.

Automatisez les tâches longues : les petites macros sont meilleures

Si votre processus comporte de nombreuses étapes, envisagez de le diviser en plusieurs macros plus petites et de les appeler séquentiellement. Cela facilite la maintenance, permet de réutiliser des blocs et simplifie le débogage.

Par exemple, une macro pour préparer les données, une autre pour les mettre en forme, une autre pour générer une impression et une autre pour exporter au format PDF ou envoyer par courriel . Vous pouvez les appeler une par une ou toutes en même temps.

Modifier et nettoyer le code enregistré

L'enregistreur capture tout : les sélections, les clics et les changements de tabulation. À l'ouverture de l'éditeur VBA, il supprime les sélections inutiles (Select/Selection) en les remplaçant par des références directes (par exemple, Range("A1").Value = ... ) et regroupe les formats dans des blocs With/End With.

De plus, il ajoute des variables et une gestion basique des erreurs. Quelques instructions conditionnelles et des vérifications simples permettent d'éviter les erreurs lorsque la plage est vide ou que la sélection n'est pas celle attendue.

Questions fréquentes

Comment créer un formulaire utilisateur dans Excel ? Ouvrez l’éditeur Visual Basic (Alt+F11), puis cliquez sur Insertion > Formulaire utilisateur et ajoutez des contrôles (zones de texte, boutons, etc.). Vous pouvez ensuite l’afficher à l’aide d’une macro.

Sub MostrarFormulario()
    UserForm1.Show
End Sub

À partir de là, attribuez des procédures aux événements des commandes (par exemple, un clic sur un bouton) pour exécuter la logique dont vous avez besoin.

Comment protéger/déprotéger une feuille de calcul avec des macros ? Utilisez ces routines en modifiant le mot de passe selon vos besoins. Elles vous permettent d’activer ou de désactiver la protection en un seul clic.

Sub ProtegerHoja()
    ActiveSheet.Protect Password:="segura", AllowFiltering:=True
End Sub

Sub DesprotegerHoja()
    ActiveSheet.Unprotect Password:="segura"
End Sub

Comment supprimer une macro ? Allez dans Développeur > Macros, sélectionnez la macro et appuyez sur Supprimer. Pour supprimer tout le code d’un module, ouvrez l’éditeur VBA (Alt+F11), localisez le module dans le projet, faites un clic droit et sélectionnez Supprimer le module (vous pouvez l’exporter au préalable si vous souhaitez le sauvegarder).

Un dernier conseil pratique : si vous créez un rapport mensuel où les clients ayant des soldes impayés doivent apparaître en rouge et en gras, enregistrez la séquence une seule fois, ajustez le code VBA pour l’appliquer à la plage appropriée (en utilisant la détection de la dernière ligne ou des filtres), et enregistrez la macro dans votre classeur de macros personnel. La prochaine fois, un simple raccourci ou bouton suffira pour appliquer la mise en forme instantanément, sans problème, en quelques secondes.

Les macros dans Excel
Article connexe:
Macros dans Excel : comment automatiser les tâches et augmenter votre productivité