Aller au contenu principal
Retour aux articles
Excel & VBA

Automatiser vos rapports Excel avec VBA : Guide pratique

Apprenez à créer une macro VBA pour générer automatiquement des rapports Excel professionnels en un clic.

Publié le 10 janvier 2025
VBAExcelAutomatisationReporting
Automatiser vos rapports Excel avec VBA : Guide pratique

Automatiser vos rapports Excel avec VBA

Si vous passez des heures chaque semaine à créer des rapports Excel identiques, l'automatisation VBA est la solution. Voici comment procéder.

Le problème classique

Vous devez :

  1. Ouvrir 10 fichiers Excel
  2. Copier des données spécifiques
  3. Les coller dans un rapport consolidé
  4. Appliquer une mise en forme
  5. Envoyer par e-mail

Temps nécessaire : 2-3 heures/semaine

La solution VBA

Avec une macro VBA, toutes ces étapes peuvent être réalisées en un clic.

Exemple de macro de consolidation

Sub ConsoliderRapports()
    Dim ws As Worksheet
    Dim fichier As String
    Dim chemin As String

    chemin = "C:\Rapports\"
    fichier = Dir(chemin & "*.xlsx")

    ' Créer une nouvelle feuille de consolidation
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "Consolidation"

    ' Parcourir tous les fichiers
    Do While fichier <> ""
        Dim wb As Workbook
        Set wb = Workbooks.Open(chemin & fichier)

        ' Copier les données (A1:F50)
        wb.Sheets(1).Range("A1:F50").Copy _
            Destination:=ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0)

        wb.Close SaveChanges:=False
        fichier = Dir
    Loop

    MsgBox "Consolidation terminée !", vbInformation
End Sub

Mise en forme automatique

Vous pouvez aussi automatiser la mise en forme :

Sub AppliquerMiseEnForme()
    With ActiveSheet.Range("A1:F1")
        .Font.Bold = True
        .Interior.Color = RGB(0, 176, 240)
        .Font.Color = vbWhite
    End With
End Sub

Envoi par e-mail automatique

Bonus : envoyez le rapport par e-mail automatiquement :

Sub EnvoyerRapport()
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "manager@entreprise.com"
        .Subject = "Rapport hebdomadaire - " & Format(Date, "dd/mm/yyyy")
        .Body = "Veuillez trouver ci-joint le rapport consolidé."
        .Attachments.Add ThisWorkbook.FullName
        .Send
    End With
End Sub

Résultat

Temps économisé : 2h30/semaine = 130 heures/an 🎯

Vous voulez automatiser vos processus Excel ? Parlons-en

Besoin d'aide pour votre projet ?

Je peux vous accompagner dans la mise en place de solutions d'automatisation et d'IA adaptées à vos besoins.

Me contacter