Excel Mania

Créer une macro Excel : guide complet pour automatiser vos tâches habituelles

Créer une macro Excel : guide complet pour automatiser vos tâches habituelles

Créer une macro Excel : guide complet pour automatiser vos tâches habituelles

Vous répétez chaque semaine les mêmes actions dans Excel : mettre en forme un tableau, supprimer des lignes vides, filtrer des données, créer un export ou préparer un reporting ? Une macro peut s’en charger à votre place en quelques secondes.

Une macro Excel est une série d’instructions enregistrées ou écrites en VBA, le langage de programmation intégré à Excel. Pas besoin d’être développeur pour commencer : l’enregistreur de macros permet déjà d’automatiser de nombreuses tâches courantes. Ensuite, avec quelques notions de VBA, vous pourrez personnaliser vos automatisations et créer de véritables petits outils.

Dans ce guide, nous allons voir comment créer une macro Excel, l’exécuter, la modifier et éviter les erreurs les plus fréquentes. L’objectif : vous faire gagner du temps sans transformer votre classeur en usine à gaz.

Avant de commencer : afficher l’onglet Développeur

L’onglet Développeur contient les principales commandes liées aux macros, au VBA et aux contrôles de formulaire. Il n’est généralement pas visible par défaut dans Excel.

Pour l’afficher :

Un nouvel onglet apparaît alors dans le ruban. Vous y trouverez notamment les boutons Visual Basic, Enregistrer une macro et Macros.

Petit conseil avant de vous lancer : travaillez sur une copie de votre fichier. Une macro mal conçue peut modifier ou supprimer des données très rapidement. C’est pratique… sauf lorsque les mauvaises lignes sont supprimées.

Créer une première macro avec l’enregistreur

L’enregistreur de macros est la manière la plus simple de créer une macro. Excel observe vos actions et génère automatiquement le code VBA correspondant.

Prenons un exemple concret. Vous recevez chaque jour un tableau de ventes et souhaitez appliquer automatiquement une mise en forme basique :

Pour enregistrer cette série d’actions :

Pour le nom de la macro, évitez les espaces et les caractères spéciaux. Préférez MettreEnFormeTableau à Mise en forme du tableau !. Cette règle peut sembler stricte, mais elle vous évitera des erreurs lorsque vous commencerez à modifier le code.

Où enregistrer une macro ?

Lors de l’enregistrement, Excel vous propose généralement trois emplacements :

Pour une macro liée à un fichier précis, choisissez Ce classeur. Par exemple, une macro qui prépare un reporting mensuel n’a pas forcément besoin d’être disponible partout.

Le classeur de macros personnelles, souvent appelé PERSONAL.XLSB, est intéressant pour les outils génériques. Vous pourriez y stocker une macro qui ajuste automatiquement les colonnes, supprime les lignes vides ou convertit une plage en tableau.

Enregistrer le fichier au bon format

Un classeur contenant du VBA ne doit pas être enregistré au format Excel classique .xlsx. Ce format ne conserve pas les macros.

Utilisez plutôt le format :

Lorsque vous enregistrez un fichier contenant une macro au format .xlsx, Excel affiche un avertissement. Prenez-le au sérieux : si vous confirmez sans changer le format, votre code VBA sera supprimé.

Découvrir le code VBA généré

Après l’enregistrement, cliquez sur Visual Basic dans l’onglet Développeur. L’éditeur VBA s’ouvre. Dans la partie gauche, vous verrez votre classeur et un dossier nommé Modules. Ouvrez le module contenant votre macro.

Le code ressemble généralement à ceci :

Sub MettreEnFormeTableau()    Range("A1:D1").Select    Selection.Font.Bold = True    Selection.Interior.Color = RGB(221, 235, 247)    Columns("A:D").AutoFit    Range("A1:D20").Borders.LineStyle = xlContinuousEnd Sub

Une procédure VBA commence par Sub et se termine par End Sub. Le nom de la macro se trouve entre les deux.

L’enregistreur fonctionne, mais il produit souvent du code un peu lourd. Les commandes Select et Selection sont très fréquentes dans les macros enregistrées. Elles indiquent à Excel de sélectionner une cellule ou une plage avant d’agir dessus.

Pour rendre le code plus fiable, on peut généralement éviter les sélections :

Sub MettreEnFormeTableau()    With Range("A1:D1")        .Font.Bold = True        .Interior.Color = RGB(221, 235, 247)    End With    Columns("A:D").AutoFit    Range("A1:D20").Borders.LineStyle = xlContinuousEnd Sub

Le bloc With permet d’appliquer plusieurs instructions au même objet sans répéter son nom. Le code devient plus lisible et s’exécute souvent plus proprement.

Écrire une macro simple à la main

Vous pouvez aussi créer une macro directement dans l’éditeur VBA. Dans le menu Insertion, cliquez sur Module, puis saisissez votre code.

Voici une macro qui efface le contenu de la colonne D à partir de la ligne 2 :

Sub EffacerColonneD()    Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row).ClearContentsEnd Sub

Cette instruction est plus souple qu’une plage fixe comme D2:D500. Elle repère la dernière cellule remplie de la colonne D et efface uniquement la zone utilisée.

Pour lancer la macro, plusieurs possibilités existent :

Créer un bouton pour exécuter une macro

Un bouton rend votre automatisation beaucoup plus accessible. Au lieu de demander aux utilisateurs d’ouvrir la liste des macros, vous leur donnez une commande claire : Actualiser le reporting, Nettoyer les données ou Générer l’export.

Pour ajouter un bouton :

Les contrôles de formulaire sont souvent suffisants pour commencer. Les contrôles ActiveX offrent davantage d’options, mais ils sont aussi plus sensibles aux problèmes de compatibilité et de sécurité. Pour un simple bouton d’action, inutile de sortir l’artillerie lourde.

Exemple pratique : nettoyer automatiquement un tableau

Imaginons une feuille nommée Import contenant des données copiées depuis un logiciel externe. Vous souhaitez supprimer les lignes vides, ajuster les colonnes et mettre en évidence les en-têtes.

Sub NettoyerImport()    Dim ws As Worksheet    Dim derniereLigne As Long    Dim derniereColonne As Long    Set ws = Worksheets("Import")    derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row    derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column    ws.Rows(1).Font.Bold = True    ws.Rows(1).Interior.Color = RGB(217, 225, 242)    ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)).AutoFilter    ws.Columns.AutoFitEnd Sub

Cette macro utilise des variables pour rendre le code adaptable. La dernière ligne et la dernière colonne sont détectées automatiquement. Vous pouvez donc importer 50 lignes aujourd’hui et 5 000 demain sans modifier la plage manuellement.

Dim sert à déclarer une variable. Set permet d’associer une variable à un objet, ici la feuille Import. Prendre l’habitude de déclarer ses variables rend le code plus clair et facilite le débogage.

Ajouter une confirmation avant une action importante

Une macro qui supprime des données devrait rarement se lancer sans avertissement. La fonction MsgBox permet d’afficher une boîte de dialogue et de demander une confirmation.

Sub SupprimerDonnees()    Dim reponse As VbMsgBoxResult    reponse = MsgBox("Voulez-vous vraiment supprimer les données ?", _                     vbYesNo + vbQuestion, _                     "Confirmation")    If reponse = vbYes Then        Range("A2:D1000").ClearContents        MsgBox "Les données ont été supprimées.", vbInformation    Else        MsgBox "Action annulée.", vbInformation    End IfEnd Sub

Cette petite précaution peut éviter bien des sueurs froides. Elle est particulièrement utile pour les macros qui suppriment, remplacent ou écrasent des informations.

Les erreurs fréquentes avec les macros Excel

Les premières difficultés sont souvent faciles à corriger. Voici les plus courantes :

Pour identifier une erreur, Excel met en évidence la ligne concernée dans l’éditeur VBA. Vous pouvez également exécuter le code pas à pas avec la touche F8. Cette méthode permet de suivre chaque instruction et de comprendre ce que fait réellement la macro.

Accélérer une macro volumineuse

Lorsque votre macro traite plusieurs milliers de lignes, Excel peut ralentir, voire donner l’impression d’être bloqué. Dans ce cas, vous pouvez désactiver temporairement l’actualisation de l’écran et le recalcul automatique :

Sub TraitementRapide()    Application.ScreenUpdating = False    Application.Calculation = xlCalculationManual    ' Vos instructions de traitement ici    Application.Calculation = xlCalculationAutomatic    Application.ScreenUpdating = TrueEnd Sub

ScreenUpdating évite qu’Excel redessine l’écran après chaque instruction. Le traitement est généralement plus rapide, surtout lorsque la macro modifie de nombreuses cellules.

Attention : pensez toujours à réactiver les options à la fin de la macro. Si vous les laissez désactivées, Excel peut sembler fonctionner étrangement ensuite. Pour une macro plus robuste, prévoyez également une gestion d’erreur afin de restaurer ces paramètres même si un problème survient.

Quelques bonnes pratiques pour un VBA fiable

La ligne Option Explicit mérite une attention particulière. Elle permet de détecter les fautes de frappe dans les noms de variables. Sans elle, VBA peut créer automatiquement une nouvelle variable à cause d’une simple erreur de saisie. Avec elle, Excel vous avertit immédiatement. Ce n’est pas spectaculaire, mais c’est le genre de détail qui évite une heure de recherche.

Penser à la sécurité des macros

Une macro peut modifier des fichiers, supprimer des données et exécuter des actions sur votre ordinateur. N’activez donc jamais les macros d’un fichier reçu d’une source inconnue.

Pour partager un fichier macro, expliquez clairement son fonctionnement et indiquez les actions qu’il réalise. Évitez également de distribuer un classeur contenant des informations sensibles ou du code dont vous ne maîtrisez pas le contenu.

Dans un environnement professionnel, les paramètres de sécurité peuvent être gérés par le service informatique. Si les macros sont bloquées, il ne s’agit pas forcément d’un dysfonctionnement : c’est parfois une règle de protection normale.

Automatiser, mais garder le contrôle

Créer une macro Excel ne consiste pas uniquement à enregistrer quelques clics. Une bonne automatisation doit être compréhensible, testée et adaptée à la façon dont le fichier évolue.

Commencez par une tâche répétitive et bien définie. Automatisez ensuite une étape à la fois. Une macro qui met en forme un tableau ou prépare un export est un excellent premier projet. Une fois à l’aise, vous pourrez explorer les boucles, les conditions, les formulaires et les interactions avec plusieurs feuilles.

Le plus important est de partir d’un besoin concret. Si vous répétez chaque lundi une opération de dix minutes, cela représente plus de huit heures par an. Une macro bien pensée peut récupérer ce temps en quelques clics. Et contrairement au café, elle ne demande pas de pause entre deux tableaux.

Quitter la version mobile