4.4Macros & programmation VBA
L'essentiel en 30 secondes
- Enregistrer, puis relire : une macro mémorise une suite d'actions en VBA — on rejoue en un clic le rapport hebdo mis en forme à l'identique.
- Lire l'éditeur (Alt+F11) pour progresser : changer une plage, une valeur, une couleur dans le code généré — macros courtes et ciblées, testées sur une copie.
- Réflexe de Wassim : une macro ne s'annule pas (Ctrl+Z inopérant) et peut être malveillante — classeur en .xlsm, sources fiables uniquement.
Mini-cas filé — Wassim rejoue sa mise en forme du lundi en un clic
Wassim, comptable à Alger, met en forme le même rapport chaque lundi (volets figés, en-têtes en gras, montants en dinars, filtre automatique). Il enregistre une macro « MiseEnFormeRapport », ouvre le code en Alt+F11, repère les lignes et ajuste la plage. Enregistré en .xlsm, un clic rejoue tout — testé d'abord sur une copie, car une macro ne s'annule pas. Quatrième jalon du fil rouge : le répétitif d'interface est automatisé, prudemment.
Suite des cas 4.1-4.3 — Wassim automatise ce que ni Power Query ni les formules ne font : les gestes d'interface.
1. Enregistrer une macro
Une macro mémorise une suite d'actions pour les rejouer. Développeur ▸ Enregistrer une macro : on effectue les gestes (mettre en forme, filtrer, coller…), on arrête l'enregistrement. Excel génère du code VBA. Rejouer la macro reproduit tout instantanément — idéal pour le rapport hebdomadaire de Wassim, mis en forme à l'identique.
On garde des macros courtes et ciblées : une tâche = une macro. Les monstres qui font tout sont illisibles et cassent au premier changement de structure.
2. Lire et adapter le VBA
Le code s'ouvre dans l'éditeur VBA (Alt+F11). Même sans être développeur, on peut le lire et l'adapter : changer une valeur, une plage, une couleur. C'est la meilleure façon d'apprendre : enregistrer, puis comprendre le code produit — Wassim y repère vite les lignes de gras et de format monétaire.
Le VBA manipule des objets (classeur, feuille, plage) avec des propriétés et des méthodes : Worksheets, Range, Font.Bold, NumberFormat… Comprendre ce vocabulaire suffit pour adapter 80 % des macros enregistrées.
3. Précautions
Un classeur avec macros s'enregistre en .xlsm — en .xlsx, les macros sont perdues. Les macros peuvent être un vecteur de virus : n'activez que celles de sources fiables, en connaissance de cause. Autre limite : une macro ne « s'annule » pas (Ctrl+Z ne défait pas ses actions) — on teste sur une copie.
Enfin, pour de la simple transformation de données, Power Query est souvent préférable à VBA : sans code, actualisable, plus sûr. VBA reste pertinent pour automatiser des actions d'interface variées (mise en forme, boîtes de dialogue, interactions entre feuilles).
🔎 Exemple concret — 🔎 Exemple concret — Automatiser une mise en forme hebdo
Chaque lundi, Wassim met en forme le même rapport ; l'enregistreur produit ce VBA :
Sub MiseEnFormeRapport()
' Figer les volets + en-têtes en gras (Wassim : rapport hebdo)
Range("A2").Select
ActiveWindow.FreezePanes = True
Rows("1:1").Font.Bold = True
' Montants en dinars + filtre automatique
Columns("C:C").NumberFormat = "#,##0 DZD"
Range("A1").AutoFilter
End Sub
Lecture : l'enregistreur transforme des clics en code réutilisable et lisible.
Leçon : on automatise le répétitif ET reproductible ; on teste sur une copie (pas d'annulation).
Vocabulaire de la section
- Macro
- Suite d'actions enregistrée pour être rejouée en un clic.
Exemple simple : La MiseEnFormeRapport de Wassim rejoue sa mise en forme du lundi.
Ce que ce n'est pas : une formule qui se recalcule seule.
Réflexe : geste hebdo identique : l'enregistrer en macro.
- VBA
- Visual Basic for Applications : le langage des macros Excel (objets, propriétés, méthodes).
Exemple simple : Wassim lit Range et Font.Bold dans son code enregistré.
Ce que ce n'est pas : le langage M de Power Query (préparation de données).
Réflexe : adapter une macro : repérer objets et propriétés.
- .xlsm
- Format de classeur prenant en charge les macros ; .xlsx les perd.
Exemple simple : Wassim enregistre son rapport automatisé en .xlsm.
Ce que ce n'est pas : un classeur .xlsx qui conserverait les macros.
Réflexe : macro créée : enregistrer aussitôt en .xlsm.
- Sécurité des macros
- Les macros peuvent être malveillantes : activer en connaissance de cause, sources fiables.
Exemple simple : Wassim n'active que ses propres macros et celles validées du cabinet.
Ce que ce n'est pas : un code inoffensif par nature, activable sans réfléchir.
Réflexe : macro reçue : vérifier la source avant d'activer.
En pratique — En pratique — Enregistrer et relire une macro
- Activez l'onglet Développeur, puis Enregistrer une macro.
- Effectuez une mise en forme simple, arrêtez l'enregistrement.
- Ouvrez le code (Alt+F11) et repérez les lignes correspondantes.
- Changez une valeur (ex. couleur), enregistrez en .xlsm, rejouez sur une copie.
Script prêt à dire — annoncer la macro à l'équipe (30 s)
« C'est Wassim : la mise en forme du rapport du lundi est enregistrée en macro — un clic rejoue tout : volets, gras, format dinars, filtre. Le classeur est en .xlsm, je l'ai testée sur une copie car une macro ne s'annule pas. N'activez que nos macros validées. »
À dire avant de diffuser le fichier : rappelez le .xlsm et la source fiable.
Modèle copier-coller — Boucle VBA sûre sur une plage (avec copie de test)
Sub NormaliserMontants()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Worksheets("Ventes").Range("C2:C500")
If IsNumeric(c.Value) Then c.Value = Round(c.Value, 2)
Next c
Application.ScreenUpdating = True
MsgBox "Montants normalisés (testé sur copie)."
End Sub
Mise en forme hebdo
Comme Wassim : enregistrer volets, gras, format DZD et filtre — un clic chaque lundi.
Adapter le code
Changer la plage C2:C500 ou le format dans l'éditeur : la macro suit la nouvelle structure.
Macro reçue par mail
Source inconnue : ne pas activer — demander validation, analyser en connaissance de cause.
Données à transformer
Préférer Power Query (sans code, actualisable) plutôt qu'une macro fragile.
✓ Bonnes pratiques
- Enregistrer d'abord, lire le code ensuite pour apprendre.
- Macros courtes et ciblées.
- Tester sur une copie (une macro ne s'annule pas).
✗ Pièges fréquents
- Activer des macros de sources inconnues (virus).
- Oublier d'enregistrer en .xlsm (macros perdues).
- Utiliser VBA là où Power Query ferait mieux (transformation de données).
Points clés à retenir
- Une macro rejoue une suite d'actions ; le code est du VBA.
- On enregistre, puis on lit/adapte dans l'éditeur (Alt+F11).
- Classeur avec macros = .xlsm ; macros = risque de sécurité.
- Une macro ne s'annule pas : tester sur une copie.
Défi 48h — appliquez demain
Sur une copie d'un vrai rapport : enregistrez votre mise en forme, relisez le code en Alt+F11, changez une valeur, enregistrez en .xlsm et rejouez.
- Je sais enregistrer et rejouer une macro ciblée.
- Je sais lire et adapter le VBA généré (plage, valeur).
- Je connais les précautions (.xlsm, copie de test, sources fiables).
Questions fréquentes
Macro (VBA) ou Power Query ?
Pour transformer/consolider des données : Power Query (sans code, actualisable, plus sûr). Pour automatiser des actions d'interface variées (mise en forme, boîtes de dialogue, interactions), VBA reste pertinent.
Faut-il savoir programmer pour utiliser des macros ?
Non pour enregistrer et rejouer ; un peu pour adapter le code. C'est justement une bonne porte d'entrée vers la programmation : enregistrer une action et lire le VBA correspondant.
Quelle précaution est propre aux macros ?