ITSkillsCenter
Bureautique & Productivité

Tutoriel : Automatiser des tâches avec les macros Excel

7 min de lecture

Qu’est-ce qu’une macro Excel ?

Une macro est un programme qui execute automatiquement une serie d’actions dans Excel. Au lieu de repeter les memes 15 clics chaque jour (formater un rapport, trier des donnees, copier des resultats), vous enregistrez la sequence une fois et la rejouez en un clic.

Les macros utilisent le langage VBA (Visual Basic for Applications), integre dans Excel. Vous n’avez pas besoin d’etre programmeur — l’enregistreur de macros fait le code pour vous. Mais comprendre les bases du VBA vous permettra de personnaliser et rendre vos automatisations bien plus puissantes.

Activer l’onglet Developpeur

Par defaut, l’onglet Developpeur est masque. Pour l’activer :

  1. Fichier → Options → Personnaliser le ruban
  2. Dans la colonne de droite, cochez « Developpeur »
  3. Cliquez OK

L’onglet Developpeur apparait dans le ruban avec les outils : Visual Basic, Macros, Enregistrer une macro, Securite des macros.

Format de fichier : Les fichiers .xlsx ne peuvent pas contenir de macros. Sauvegardez en .xlsm (Classeur Excel prenant en charge les macros).

Methode 1 : Enregistrer une macro sans coder

L’enregistreur de macros capture chaque action que vous faites et la convertit en code VBA :

  1. Onglet Developpeur → « Enregistrer une macro »
  2. Donnez un nom (sans espaces ni accents) : ex. FormatRapport
  3. Optionnel : assignez un raccourci clavier (ex: Ctrl+Shift+R)
  4. Stocker dans : « Ce classeur » (le plus courant) ou « Classeur de macros personnelles » (disponible partout)
  5. Cliquez OK — l’enregistrement commence
  6. Effectuez vos actions normalement (formatage, tri, copie…)
  7. Cliquez « Arreter l’enregistrement »

Exemple — Macro « FormatRapport » :

  1. Selectionnez A1:H1 (en-tetes)
  2. Mettez en gras, fond bleu fonce #1A5276, texte blanc
  3. Selectionnez tout le tableau (Ctrl+Shift+End)
  4. Ajoutez des bordures (toutes les bordures)
  5. Ajustez la largeur des colonnes
  6. Format nombre FCFA sur les colonnes montant : # ##0 « FCFA »
  7. Arretez l’enregistrement

Desormais, chaque fois que vous importez un nouveau rapport, un Ctrl+Shift+R formate tout instantanement.

Executer une macro

4 facons de lancer une macro :

Methode Comment Ideal pour
Raccourci clavier Le raccourci assigne (ex: Ctrl+Shift+R) Macros frequentes
Menu Macros Developpeur → Macros → selectionner → Executer Acceder a toutes vos macros
Bouton dans la feuille Insertion → Formes → dessinez un rectangle → clic droit → Affecter une macro Dashboard avec boutons d’action
Icone dans le ruban Fichier → Options → Barre d’outils Acces rapide → Macros → Ajouter Macros universelles

Introduction au VBA : comprendre le code

Appuyez sur Alt+F11 pour ouvrir l’editeur VBA. Votre macro enregistree ressemble a ceci :

Sub FormatRapport()
    Range("A1:H1").Select
    Selection.Font.Bold = True
    Selection.Interior.Color = RGB(26, 82, 118)
    Selection.Font.Color = RGB(255, 255, 255)
    Range("A1").CurrentRegion.Select
    Selection.Borders.LineStyle = xlContinuous
    Cells.EntireColumn.AutoFit
End Sub

Vocabulaire VBA essentiel :

Terme Signification Exemple
Sub…End Sub Debut et fin d’une macro Sub MaMacro() … End Sub
Range(« A1 ») Designe une cellule ou plage Range(« A1:D10 »)
Cells(ligne, colonne) Designe une cellule par position Cells(1, 1) = cellule A1
.Value La valeur d’une cellule Range(« A1 »).Value = « Bonjour »
.Font.Bold Mise en gras Range(« A1 »).Font.Bold = True
.Interior.Color Couleur de fond .Interior.Color = RGB(0,0,255)
ActiveSheet La feuille active ActiveSheet.Name = « Rapport »
MsgBox Afficher un message MsgBox « Termine ! »

10 macros utiles pretes a copier

1. Supprimer les lignes vides :

Sub SupprimerLignesVides()
    Dim derniereLigne As Long
    derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
    Dim i As Long
    For i = derniereLigne To 1 Step -1
        If Application.CountA(Rows(i)) = 0 Then
            Rows(i).Delete
        End If
    Next i
    MsgBox "Lignes vides supprimees !"
End Sub

2. Proteger toutes les feuilles d’un coup :

Sub ProtegerToutesFeuilles()
    Dim ws As Worksheet
    Dim mdp As String
    mdp = InputBox("Entrez le mot de passe :")
    For Each ws In ActiveWorkbook.Worksheets
        ws.Protect Password:=mdp
    Next ws
    MsgBox "Toutes les feuilles sont protegees."
End Sub

3. Exporter chaque feuille en PDF separe :

Sub ExporterFeuillesEnPDF()
    Dim ws As Worksheet
    Dim chemin As String
    chemin = ActiveWorkbook.Path & "\"
    For Each ws In ActiveWorkbook.Worksheets
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=chemin & ws.Name & ".pdf"
    Next ws
    MsgBox "Export PDF termine dans " & chemin
End Sub

4. Envoyer un email de relance automatique (via Outlook) :

Sub EnvoyerRelance()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim i As Long
    Set OutApp = CreateObject("Outlook.Application")
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 9).Value = "En retard" Then
            Set OutMail = OutApp.CreateItem(0)
            OutMail.To = Cells(i, 10).Value
            OutMail.Subject = "Relance facture " & Cells(i, 7).Value
            OutMail.Body = "Bonjour " & Cells(i, 2).Value & "," & vbCrLf & _
                "La facture " & Cells(i, 7).Value & " reste impayee." & vbCrLf & _
                "Merci de proceder au reglement."
            OutMail.Display
        End If
    Next i
End Sub

5. Horodater automatiquement une modification :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        Application.EnableEvents = False
        Target.Offset(0, 5).Value = Now
        Application.EnableEvents = True
    End If
End Sub

Placez ce code dans le module de la FEUILLE (clic droit sur l’onglet → Visualiser le code). Chaque modification en colonne B inscrit la date/heure en colonne G.

6. Creer un sommaire avec liens vers chaque feuille :

Sub CreerSommaire()
    Dim ws As Worksheet
    Dim sommaire As Worksheet
    Dim i As Long
    Set sommaire = Sheets.Add(Before:=Sheets(1))
    sommaire.Name = "Sommaire"
    sommaire.Range("A1").Value = "SOMMAIRE DU CLASSEUR"
    sommaire.Range("A1").Font.Size = 16
    i = 3
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Sommaire" Then
            sommaire.Cells(i, 1).Value = ws.Name
            i = i + 1
        End If
    Next ws
End Sub

7. Sauvegarder une copie horodatee :

Sub SauvegardeCopie()
    Dim nomFichier As String
    nomFichier = ActiveWorkbook.Path & "\" & _
        Replace(ActiveWorkbook.Name, ".xlsm", "") & _
        "_" & Format(Now, "yyyy-mm-dd_hhmmss") & ".xlsm"
    ActiveWorkbook.SaveCopyAs nomFichier
    MsgBox "Copie sauvegardee : " & nomFichier
End Sub

8. Supprimer les doublons dans une colonne :

Sub SupprimerDoublons()
    Dim plage As Range
    Set plage = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    plage.RemoveDuplicates Columns:=1, Header:=xlYes
    MsgBox "Doublons supprimes !"
End Sub

9. Convertir tout en MAJUSCULES / minuscules :

Sub ConvertirMajuscules()
    Dim cell As Range
    For Each cell In Selection
        If Not IsEmpty(cell) Then
            cell.Value = UCase(cell.Value)
        End If
    Next cell
End Sub

10. Inserer la date du jour dans chaque feuille :

Sub DateDuJourPartout()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Range("A1").Value = "Rapport du " & Format(Date, "dd/mm/yyyy")
        ws.Range("A1").Font.Bold = True
    Next ws
End Sub

Boucles et conditions : automatiser intelligemment

Boucle For — parcourir des lignes :

Sub VerifierStocks()
    Dim derniereLigne As Long
    derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
    Dim i As Long
    For i = 2 To derniereLigne
        If Cells(i, 5).Value < Cells(i, 6).Value Then
            Cells(i, 7).Value = "REAPPROVISIONNER"
            Cells(i, 7).Font.Color = RGB(255, 0, 0)
        Else
            Cells(i, 7).Value = "OK"
            Cells(i, 7).Font.Color = RGB(0, 128, 0)
        End If
    Next i
End Sub

Securite des macros

Les macros peuvent contenir du code malveillant. Configurez le bon niveau :

  1. Developpeur → Securite des macros
  2. Choisissez « Desactiver toutes les macros avec notification » (recommande)

Regles de securite :

  • N’activez les macros QUE pour les fichiers que vous avez crees ou recus d’une source fiable
  • Mefiez-vous des fichiers .xlsm recus par email ou WhatsApp d’inconnus
  • Ne cliquez jamais « Activer le contenu » sur un fichier suspect

Astuce performance — accelerer vos macros

Sub MaMacroRapide()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    
    ' ... votre code ici ...
    
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Cette technique peut accelerer une macro de 10x a 100x sur de grandes feuilles de donnees.

Erreurs courantes et debogage

Erreur Cause probable Solution
Erreur 1004 La feuille referencee n’est pas active Activez la feuille d’abord : Sheets(« MaFeuille »).Activate
Erreur 13 : Incompatibilite de type Texte dans une variable numerique Verifiez les types (Dim x As String vs As Long)
La macro ne se sauvegarde pas Fichier en .xlsx au lieu de .xlsm Enregistrer sous → .xlsm
Boucle infinie (Excel se fige) Condition de sortie jamais atteinte Ctrl+Break pour interrompre, puis corrigez
Macro trop lente Actualisation ecran a chaque action Application.ScreenUpdating = False en debut de macro

Checklist macros Excel

  • ☐ Onglet Developpeur active
  • ☐ Fichier enregistre en .xlsm (pas .xlsx)
  • ☐ Macro testee sur une copie du fichier avant utilisation en production
  • ☐ Raccourci clavier assigne pour les macros frequentes
  • ☐ Commentaires dans le code VBA pour expliquer chaque bloc
  • ☐ ScreenUpdating = False pour les macros longues
  • ☐ Gestion d’erreurs (On Error) pour les macros critiques
  • ☐ Securite des macros configuree en mode « notification »
#excel #macros #vba
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 350.000 FCFA
Parlons de Votre Projet
Publicité

Articles Similaires