Automatiser les processus de synthèse des données, Excel VBA
Automatiser la synthèse des données dans Excel avec VBA peut être très utile pour gagner du temps et réduire les erreurs humaines. Voici un exemple détaillé d’un code VBA qui peut être utilisé pour automatiser ce processus. L’objectif de ce code sera de consolider des données provenant de plusieurs feuilles dans un seul tableau récapitulatif.
Scénario
Imaginons que nous avons plusieurs feuilles de travail dans un classeur Excel, chacune contenant des données similaires (par exemple, les ventes de différentes régions) et nous voulons automatiser la consolidation de ces données dans une feuille « Synthèse ».
Étape 1 : Préparation des données
Imaginons que chaque feuille contient des données de ventes avec les colonnes suivantes :
• Nom du produit
• Quantité vendue
• Chiffre d’affaires
Nous souhaitons compiler ces informations dans une feuille de synthèse.
Étape 2 : Structure du code VBA
Voici un exemple de code VBA qui parcourt chaque feuille de travail, récupère les données et les copie dans une feuille de synthèse.
Code VBA pour automatiser la synthèse des données
1. Accéder à l’éditeur VBA :
Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
Cliquez sur Insertion puis sur Module pour insérer un nouveau module.
2. Écrire le code VBA :
Sub AutomatiserSynthese() ' Déclarations des variables Dim wsSynthese As Worksheet Dim ws As Worksheet Dim i As Long, lastRow As Long, syntheseRow As Long Dim dataRange As Range Dim cell As Range ' Créer ou activer la feuille Synthèse On Error Resume Next Set wsSynthese = ThisWorkbook.Sheets("Synthèse") On Error GoTo 0 If wsSynthese Is Nothing Then ' Si la feuille "Synthèse" n'existe pas, la créer Set wsSynthese = ThisWorkbook.Sheets.Add wsSynthese.Name = "Synthèse" End If ' Effacer les anciennes données dans la feuille Synthèse wsSynthese.Cells.Clear ' Ajouter les en-têtes de la synthèse wsSynthese.Cells(1, 1).Value = "Nom du Produit" wsSynthese.Cells(1, 2).Value = "Quantité Totale" wsSynthese.Cells(1, 3).Value = "Chiffre d'Affaires Total" syntheseRow = 2 ' Ligne à partir de laquelle les données seront collées ' Parcourir chaque feuille du classeur For Each ws In ThisWorkbook.Sheets ' Ignorer la feuille de synthèse elle-même If ws.Name <> "Synthèse" Then ' Trouver la dernière ligne de données dans la feuille actuelle lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Définir la plage de données à copier (ici, de A2 à C dernier ligne) Set dataRange = ws.Range("A2:C" & lastRow) ' Copier les données dans la feuille de synthèse For Each cell In dataRange.Rows ' Copier chaque ligne de données dans la feuille Synthèse wsSynthese.Cells(syntheseRow, 1).Value = cell.Cells(1, 1).Value ' Nom du Produit wsSynthese.Cells(syntheseRow, 2).Value = wsSynthese.Cells(syntheseRow, 2).Value + cell.Cells(1, 2).Value ' Quantité Totale wsSynthese.Cells(syntheseRow, 3).Value = wsSynthese.Cells(syntheseRow, 3).Value + cell.Cells(1, 3).Value ' Chiffre d'Affaires Total ' Passer à la ligne suivante dans la feuille Synthèse syntheseRow = syntheseRow + 1 Next cell End If Next ws ' Message pour indiquer que la synthèse est terminée MsgBox "La synthèse des données a été effectuée avec succès!", vbInformation End Sub
Explication du Code
1. Déclarations des variables :
wsSynthese : Variable pour la feuille « Synthèse ».
ws : Variable pour chaque feuille de travail.
i, lastRow, syntheseRow : Variables pour gérer les lignes de données.
dataRange : Plage de données à copier.
cell : Variable pour parcourir chaque ligne de données.
2. Création ou activation de la feuille de synthèse :
On vérifie d’abord si la feuille « Synthèse » existe déjà. Si elle n’existe pas, elle est créée.
3. Effacer les anciennes données :
Si la feuille de synthèse existe déjà, toutes les données précédentes sont effacées avec Cells.Clear.
4. Ajouter des en-têtes :
Les colonnes « Nom du produit », « Quantité Totale », « Chiffre d’Affaires Total » sont ajoutées en ligne 1 de la feuille de synthèse.
5. Parcourir chaque feuille :
Le code parcourt chaque feuille du classeur, à l’exception de la feuille « Synthèse ».
Pour chaque feuille, le code trouve la dernière ligne de données (lastRow) et définit la plage de données à copier (dataRange).
6. Copie des données :
Pour chaque ligne de la plage dataRange, les données sont copiées dans la feuille « Synthèse ».
Les quantités et le chiffre d’affaires sont additionnés dans les colonnes appropriées.
7. Message de confirmation :
Un message s’affiche une fois que l’automatisation est terminée pour informer l’utilisateur que la synthèse a bien été réalisée.
Étape 3 : Exécution du Code
Pour exécuter le code :
1. Dans l’éditeur VBA, appuyez sur F5 ou allez dans « Exécuter » > « Exécuter Sub/UserForm ».
2. Le code va parcourir toutes les feuilles et copier les données dans la feuille de synthèse.
Étape 4 : Personnalisation
• Vous pouvez adapter ce code pour ajouter d’autres types de synthèses, comme des moyennes, des filtres spécifiques, ou encore la génération de graphiques.
• Le code peut être amélioré pour gérer des erreurs spécifiques, comme des cellules vides ou des formats incorrects.
Ce code est une base simple pour automatiser la consolidation de données dans Excel. Vous pouvez l’enrichir en fonction de vos besoins spécifiques !