Automatisez les processus d’agrégation de données, Excel VBA
L’automatisation des processus d’agrégation de données dans Excel avec VBA permet de faciliter des tâches répétitives, telles que la compilation de données provenant de plusieurs feuilles de calcul ou la création de résumés statistiques. Voici un exemple de code VBA qui agrège les données de plusieurs feuilles dans un tableau consolidé sur une feuille dédiée.
Scénario :
Nous avons plusieurs feuilles de calcul dans un fichier Excel, et nous voulons agréger les données d’une colonne spécifique de chaque feuille dans une feuille « Consolidée ». Par exemple, chaque feuille contient des ventes de produits et nous souhaitons regrouper toutes ces informations sur une seule feuille.
Étapes de l’exemple :
1. Chaque feuille contient une colonne avec des valeurs numériques que nous voulons additionner.
2. Nous allons créer une feuille « Consolidée » qui résume ces valeurs.
3. Le code VBA va parcourir chaque feuille, extraire la valeur, et la copier dans la feuille « Consolidée ».
Exemple de code VBA :
Sub AggregationDesDonnees()
Dim ws As Worksheet
Dim wsConsolide As Worksheet
Dim ligne As Long
Dim somme As Double
Dim derniereLigne As Long
Dim cell As Range
Dim colSource As Long
Dim colConsolide As Long
' Créer une feuille "Consolidée" si elle n'existe pas déjà
On Error Resume Next
Set wsConsolide = ThisWorkbook.Sheets("Consolidée")
On Error GoTo 0
If wsConsolide Is Nothing Then
Set wsConsolide = ThisWorkbook.Sheets.Add
wsConsolide.Name = "Consolidée"
End If
' Initialiser les colonnes (par exemple, Colonne A pour les noms des feuilles et Colonne B pour les sommes)
wsConsolide.Cells.Clear ' Effacer les anciennes données
wsConsolide.Cells(1, 1).Value = "Nom de la feuille"
wsConsolide.Cells(1, 2).Value = "Somme des valeurs"
colSource = 1 ' Supposons que les données sont dans la colonne A des autres feuilles
colConsolide = 2 ' Nous mettons les résultats dans la colonne B de la feuille "Consolidée"
ligne = 2 ' Démarrer à la ligne 2 dans la feuille "Consolidée"
' Parcourir chaque feuille du classeur
For Each ws In ThisWorkbook.Sheets
If ws.Name <> "Consolidée" Then ' Ignorer la feuille de consolidation
' Trouver la dernière ligne avec des données dans la feuille source
derniereLigne = ws.Cells(ws.Rows.Count, colSource).End(xlUp).Row
somme = 0 ' Réinitialiser la somme avant de commencer à additionner
' Additionner les valeurs de la colonne de la feuille actuelle
For Each cell In ws.Range(ws.Cells(1, colSource), ws.Cells(derniereLigne, colSource))
If IsNumeric(cell.Value) Then
somme = somme + cell.Value
End If
Next cell
' Copier les résultats dans la feuille Consolidée
wsConsolide.Cells(ligne, 1).Value = ws.Name ' Nom de la feuille
wsConsolide.Cells(ligne, 2).Value = somme ' Somme des valeurs de la colonne
ligne = ligne + 1 ' Passer à la ligne suivante pour la feuille suivante
End If
Next ws
MsgBox "L'agrégation des données est terminée!"
End Sub
Explication du code :
1. Création de la feuille « Consolidée » :
Le code commence par vérifier si la feuille « Consolidée » existe déjà. Si ce n’est pas le cas, il la crée. Ensuite, il prépare les colonnes où seront affichées les informations : la colonne A pour le nom de chaque feuille et la colonne B pour la somme des données agrégées.
2. Initialisation des variables :
colSource correspond à la colonne dans chaque feuille d’où nous allons extraire les données (ici la colonne A).
colConsolide est la colonne dans la feuille « Consolidée » où seront inscrites les sommes.
ligne est l’index de ligne où les résultats seront copiés dans la feuille « Consolidée ».
3. Boucle à travers toutes les feuilles :
Le code parcourt chaque feuille de travail dans le classeur. S’il trouve une feuille dont le nom n’est pas « Consolidée », il passe à l’étape suivante.
4. Calcul de la somme des données :
Pour chaque feuille, le code identifie la dernière ligne de données dans la colonne de source (ici, la colonne A). Ensuite, il boucle à travers chaque cellule de cette colonne, additionne les valeurs numériques et les stocke dans la variable somme.
5. Enregistrement des résultats dans la feuille « Consolidée » :
Le nom de la feuille est inscrit dans la colonne A de la feuille « Consolidée » et la somme calculée est insérée dans la colonne B à la ligne correspondante.
6. Message de fin :
Une fois que toutes les feuilles ont été traitées, un message s’affiche pour indiquer que l’agrégation des données est terminée.
Comment utiliser ce code :
1. Ouvrez votre fichier Excel.
2. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
3. Dans l’éditeur VBA, cliquez sur Insertion > Module pour créer un nouveau module.
4. Collez le code ci-dessus dans le module.
5. Fermez l’éditeur VBA et revenez à Excel.
6. Exécutez la macro en appuyant sur Alt + F8, sélectionnez AggregationDesDonnees et cliquez sur Exécuter.
Résultat :
Le code va créer une nouvelle feuille appelée « Consolidée » avec les noms des feuilles et les sommes agrégées des données de chaque feuille.