Pour automatiser le processus de consolidation des données dans Excel à l’aide de VBA (Visual Basic for Applications), nous allons créer un script VBA détaillé. Ce code va vous permettre de collecter des données provenant de plusieurs feuilles de calcul ou fichiers Excel, de les fusionner et de les organiser dans une feuille de consolidation principale.
Objectifs du code :
- Ouvrir plusieurs fichiers Excel ou plusieurs feuilles dans un même classeur.
- Consolider les données de ces fichiers/feuilles dans une seule feuille.
- Effectuer des opérations comme l’ajout des données, la suppression des doublons et la mise en forme.
Scénario :
- Nous avons plusieurs fichiers Excel (ou feuilles dans un même fichier) contenant des données similaires dans la même structure.
- Le but est de consolider ces données dans une feuille principale appelée Consolidation.
Étapes générales :
- Ouvrir les fichiers sources.
- Parcourir chaque fichier ou chaque feuille pour récupérer les données.
- Copier ces données dans une feuille de consolidation.
- Supprimer les doublons (si nécessaire).
- Formater la feuille de consolidation (ajouter des titres de colonnes, appliquer un formatage conditionnel, etc.).
Exemple de Code VBA :
Sub ConsoliderDonnees() ' Déclaration des variables Dim wsConsolidation As Worksheet Dim wbSource As Workbook Dim wsSource As Worksheet Dim dernLigneConsol As Long Dim dernLigneSource As Long Dim fichierSource As String Dim cheminSource As String Dim i As Integer ' Créer ou activer la feuille de consolidation On Error Resume Next Set wsConsolidation = ThisWorkbook.Sheets("Consolidation") On Error GoTo 0 If wsConsolidation Is Nothing Then Set wsConsolidation = ThisWorkbook.Sheets.Add wsConsolidation.Name = "Consolidation" End If ' Effacer les anciennes données dans la feuille de consolidation wsConsolidation.Cells.Clear ' Ajouter les titres de colonnes (personnalisez en fonction de vos besoins) wsConsolidation.Cells(1, 1).Value = "Nom" wsConsolidation.Cells(1, 2).Value = "Prénom" wsConsolidation.Cells(1, 3).Value = "Age" wsConsolidation.Cells(1, 4).Value = "Date d'Inscription" ' Définir le chemin des fichiers sources (ajustez ce chemin selon votre configuration) cheminSource = "C:\Users\VotreNom\Documents\Excel\Sources\" ' Liste des fichiers à consolider ' (Si vous avez plusieurs fichiers à consolider, listez-les ici) fichiers = Array("Fichier1.xlsx", "Fichier2.xlsx", "Fichier3.xlsx") ' Boucle sur chaque fichier For i = LBound(fichiers) To UBound(fichiers) ' Ouvrir le fichier source fichierSource = cheminSource & fichiers(i) Set wbSource = Workbooks.Open(fichierSource) ' Boucle sur chaque feuille du fichier For Each wsSource In wbSource.Sheets ' Trouver la dernière ligne utilisée dans la feuille source dernLigneSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' Trouver la dernière ligne vide dans la feuille de consolidation dernLigneConsol = wsConsolidation.Cells(wsConsolidation.Rows.Count, "A").End(xlUp).Row + 1 ' Copier les données de la feuille source vers la feuille de consolidation wsSource.Range("A2:D" & dernLigneSource).Copy wsConsolidation.Range("A" & dernLigneConsol) Next wsSource ' Fermer le fichier source sans enregistrer wbSource.Close False Next i ' Supprimer les doublons dans la feuille de consolidation wsConsolidation.Range("A1:D" & wsConsolidation.Cells(wsConsolidation.Rows.Count, "A").End(xlUp).Row).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes ' Appliquer un formatage à la feuille de consolidation (facultatif) wsConsolidation.Columns.AutoFit wsConsolidation.Rows(1).Font.Bold = True wsConsolidation.Rows(1).HorizontalAlignment = xlCenter ' Message pour indiquer que la consolidation est terminée MsgBox "La consolidation des données est terminée.", vbInformation End Sub
Explication détaillée du code :
- Création et préparation de la feuille de consolidation :
- Nous vérifions si la feuille Consolidation existe dans le classeur courant. Si elle n’existe pas, elle est créée.
- Ensuite, nous ajoutons des en-têtes de colonnes dans la première ligne de la feuille de consolidation.
- Définition du chemin des fichiers sources :
- Le chemin des fichiers sources est défini dans la variable cheminSource.
- La liste des fichiers à consolider est stockée dans un tableau fichiers, que vous pouvez personnaliser selon vos besoins.
- Boucle pour traiter chaque fichier source :
- Pour chaque fichier source, nous l’ouvrons et parcourons chacune de ses feuilles.
- Les données sont copiées de la feuille source vers la feuille de consolidation, à partir de la ligne 2 (pour ne pas copier les en-têtes).
- Suppression des doublons :
- Après avoir copié toutes les données, nous supprimons les doublons basés sur les colonnes 1, 2 et 3 (nom, prénom et âge).
- Vous pouvez modifier les colonnes en fonction de vos besoins.
- Formatage final :
- Le code applique un formatage simple : ajustement automatique de la largeur des colonnes et mise en gras des titres.
- Message de confirmation :
- Une fois le processus terminé, un message est affiché pour informer l’utilisateur que la consolidation est terminée.
Personnalisation :
- Nom des fichiers et des colonnes : Vous pouvez modifier les noms de fichiers dans le tableau fichiers et personnaliser les colonnes selon votre structure de données.
- Traitement des doublons : Si vous souhaitez supprimer les doublons sur d’autres colonnes ou ajouter des critères de filtrage, modifiez le code dans la partie RemoveDuplicates.
- Formatage supplémentaire : Vous pouvez ajouter des couleurs ou des styles de mise en forme selon vos préférences dans la partie formatage.
Conclusion :
Ce script VBA automatisera efficacement le processus de consolidation des données provenant de plusieurs fichiers Excel. Vous pourrez l’adapter à vos besoins spécifiques en modifiant les chemins, les colonnes à consolider et le type de traitement que vous souhaitez appliquer aux données consolidées.