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

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