Créer une macro VBA simple dans Excel – Guide pas à pas


Créer une macro VBA simple dans Excel – Guide pas à pas

Automatiser des tâches manuelles dans Excel n’a jamais été aussi accessible : en quelques clics, vous pouvez enregistrer une action répétitive et la transformer en macro VBA capable de la reproduire à volonté. Ce tutoriel vous guide pas à pas, de l’activation de l’onglet Développeur jusqu’à la personnalisation du code dans l’éditeur, pour que vous maîtrisiez rapidement les fondamentaux.

🐣 Activation rapide : ouvrez Excel, affichez l’onglet Développeur en quelques secondes et lancez l’enregistreur de macros sans chercher dans tous les menus.

📝 Enregistrement automatique : capturez la séquence d’actions (mise en forme, tri, calcul) et générez un code VBA prêt à l’emploi, sans écrire une ligne de code manuellement.

🔧 Édition personnalisée : plongez dans l’éditeur Visual Basic pour ajuster, renommer ou supprimer des instructions superflues et rendre votre macro unique.

🚀 Déploiement express : attribuez un raccourci clavier ou un bouton et exécutez votre macro d’un simple geste, boostant ainsi votre productivité.

Comprendre les bases des macros VBA dans Excel

Qu’est-ce qu’une macro VBA ?

Une macro VBA (Visual Basic for Applications) est un script qui enregistre ou écrit des instructions pour automatiser des actions dans Excel. Plutôt que de répéter manuellement les mêmes opérations—formatage, calcul, tri ou même import de données—vous stockez cette séquence dans un module et la rejouez à volonté. C’est un gain de temps évident, surtout lorsqu’il s’agit de rapports périodiques ou d’étapes standardisées.

Pourquoi passer par VBA plutôt que par l’enregistreur Excel seul ?

L’enregistreur de macros rapide est idéal pour capturer des gestes simples, mais il génère un code parfois lourd ou redondant. Avec un minimum de connaissances VBA, vous pouvez épurer ce code, ajouter des boucles, gérer des conditions (If…Then) et créer des procédures modulaires. Cela vous offre une flexibilité et une maintenabilité supérieures aux simples macros « brutes ».

Étape 1 : Activer l’onglet Développeur

L’onglet Développeur n’apparaît pas par défaut. Pour l’ajouter, cliquez sur Fichier > Options > Personnaliser le ruban, puis cochez « Développeur » dans la colonne de droite. Validez et observez immédiatement un nouveau groupe d’outils dédié aux macros et aux contrôles ActiveX s’inviter sur votre barre de menus.

Étape 2 : Enregistrer une macro simple

Lancer l’enregistreur de macros

Dans l’onglet Développeur, cliquez sur Enregistrer une macro. Donnez un nom explicite—par exemple « FormaterTableau »—et choisissez si la macro doit être stockée dans le classeur actif ou dans votre classeur de macros personnelles (PERSONAL.XLSB). Cette dernière option la rend accessible depuis n’importe quel fichier ouvert sur votre machine.

Effectuer des actions et arrêter l’enregistrement

Une fois l’enregistreur actif, effectuez une série d’actions : sélectionnez une plage, appliquez une couleur de fond, modifiez la taille de police ou insérez une bordure. Lorsque vous avez terminé, retournez dans l’onglet Développeur et cliquez sur Arrêter l’enregistrement. Votre séquence est désormais stockée et peut être réutilisée sans effort.

Étape 3 : Personnaliser votre macro dans l’éditeur VBA

Naviguer dans l’éditeur Visual Basic

Appuyez sur Alt+F11 pour ouvrir l’éditeur VBA. À gauche, le volet Projet affiche tous vos classeurs ouverts. Recherchez « Modules », double-cliquez sur Module1 (ou celui que vous venez de créer) : le code enregistré y est visible, avec des lignes démarrant par Selection. et ActiveCell..

Modifier et épurer le code généré

Sub FormaterTableau()
Range(« A1:D10 »).Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.Color = 65535
End With
End Sub

Pour rendre le script plus robuste, remplacez les sélections par des références directes :
With ThisWorkbook.Sheets("Feuil1").Range("A1:D10")
.Font.Bold = True
.Interior.Color = vbYellow
End With.
Ainsi, la macro ne dépend plus du focus actuel et s’exécute toujours sur la plage souhaitée.

Étape 4 : Exécuter et attribuer un raccourci

Pour tester la macro, retournez dans Excel, onglet Développeur, cliquez sur Macros, sélectionnez « FormaterTableau » puis Exécuter. Pour aller plus vite, vous pouvez attribuer un raccourci clavier (Ctrl+Maj+F, par exemple) via le bouton Options de la boîte de dialogue Macros, ou ajouter un bouton Forme en mode Insertion.

Exemples d’applications concrètes

  • Automatiser la comparaison de deux feuilles rapidement en surlignant les différences cellule par cellule.
  • Déclencher une mise en forme conditionnelle avancée via un script dès qu’une valeur dépasse un seuil prédéfini.
  • Lancer automatiquement le rafraîchissement des données d’un tableau croisé dynamique à l’ouverture du classeur pour garantir des chiffres à jour.
  • Envoyer un rapport automatisé par e-mail ou publier un fichier Excel en ligne (via SharePoint ou OneDrive), sans quitter votre classeur.
Interface Excel et éditeur VBA affichant une macro de formatage simple

Bonnes pratiques et conseils

Conseil Description
Commentaires Insérez des lignes avec ' pour expliquer chaque étape du code et faciliter la maintenance.
Test sur copie Travaillez toujours sur une copie du classeur pour éviter tout risque de perte de données.
Débogage Utilisez Debug.Print pour afficher des valeurs intermédiaires dans la Fenêtre Exécution et suivre le déroulement.

FAQ

Comment exécuter une macro si l’onglet Développeur n’est pas visible ?
Utilisez le raccourci Alt+F8 pour ouvrir directement la liste des macros disponibles et lancez-en une sans passer par le ruban.
Puis-je modifier une macro enregistrée sans l’éditeur VBA ?
Non, l’éditeur VBA est incontournable pour renommer des procédures, ajuster les références de plage ou insérer des structures conditionnelles et boucles.
Comment sécuriser l’exécution de macros dans mes fichiers ?
Activez la protection par mot de passe du projet VBA (dans l’éditeur, menu Outils > Propriétés VBAProject > Onglet Protection) et désactivez les macros non signées.
Est-il possible d’automatiser des actions dans plusieurs classeurs simultanément ?
Oui, en ouvrant chaque classeur via VBA (Workbooks.Open) et en opérant sur leurs objets Sheets/Ranges à l’aide de boucles.
Quelle différence entre une macro enregistrée et une procédure écrite à la main ?
L’enregistreur est pratique pour débuter, mais un code écrit à la main s’avère plus léger, plus clair et parfaitement adapté à des besoins complexes.

Laisser un commentaire