Fusionner automatiquement les données de plusieurs feuilles Excel dans une synthèse avec VBA
Fusionner automatiquement les données de plusieurs feuilles Excel dans une synthèse avec VBA
🎯 Objectif de la macro
L’objectif de cette macro est de :
-
Parcourir toutes les feuilles d’un classeur Excel (sauf la feuille "Synthèse"),
-
Ajouter le nom de chaque feuille à chaque ligne de données,
-
Copier toutes les lignes utiles vers une nouvelle feuille de synthèse,
-
Créer un tableau consolidé prêt à être analysé ou exporté.
C’est un excellent outil pour gérer des fichiers contenant :
-
Des feuilles de suivi par client ou par mois,
-
Des relevés d'élèves, des états de paie, ou tout autre tableau standardisé feuille par feuille.
🧠 Code complet et propre
🔍 Étape par étape
1. Option Explicit
-
Force à déclarer toutes les variables → évite les erreurs de frappe.
2.📌 Bloc de code :
🔍 Explication détaillée
✅ Dim ws As Worksheet, syntheseWs As Worksheet
-
ws: représente la feuille de calcul active dans la boucle. Elle change à chaque itération. -
syntheseWs: représente la feuille de synthèse créée par la macro. Toutes les données y seront copiées.
➡️ Ces deux variables permettent de manipuler des feuilles sans les sélectionner (plus rapide, plus propre).
✅ Dim dercol As Long
-
dercol= Dernière colonne utilisée dans une feuille, souvent détectée à partir de la ligne d’en-tête (ligne 10). -
Sert à savoir où ajouter le nom de la feuille source dans la colonne suivante.
✅ Dim derligne As Long
-
derligne= Dernière ligne de données dans une colonne de référence (souvent colonne A ou B). -
Utile pour définir la fin du tableau à copier.
✅ Dim derligne2 As Long
-
Variante de
derligne, parfois calculée selon une autre colonne. -
Peut être utile pour comparer différentes colonnes ou éviter les erreurs de format.
✅ Dim i As Long
-
Compteur de boucle pour parcourir les lignes d’une feuille.
✅ Dim j As Long
-
Compteur de boucle pour parcourir les feuilles du classeur.
✅ Dim lr As Long
-
lrsignifie "Last Row" : la prochaine ligne vide dans la feuille "Synthèse". -
Sert à savoir où coller la prochaine ligne copiée sans écraser les précédentes.
✅ Dim lastSheetIndex As Long
-
Contient le nombre total de feuilles du classeur au moment de l'exécution.
-
Sert de limite à la boucle
For j = 1 To lastSheetIndex.
🧠 Résumé visuel
| Variable | Type | Rôle principal |
|---|---|---|
ws | Worksheet | Feuille active dans la boucle |
syntheseWs | Worksheet | Feuille de destination ("Synthèse") |
dercol | Long | Dernière colonne utilisée |
derligne | Long | Dernière ligne de données |
derligne2 | Long | Ligne de contrôle supplémentaire |
i | Long | Index des lignes |
j | Long | Index des feuilles |
lr | Long | Dernière ligne vide dans "Synthèse" |
lastSheetIndex | Long | Nombre total de feuilles |
.
3. Création de la feuille Synthèse
-
Crée une nouvelle feuille à la fin nommée "Synthèse".
4. Copie des en-têtes
-
Copie les titres du tableau depuis la ligne 10 de la première feuille.
5. Boucle sur toutes les feuilles sauf "Synthèse"
-
Parcourt chaque feuille.
6. Détection des limites du tableau
-
dercol: dernière colonne utilisée à la ligne 10. -
derligne: dernière ligne remplie de la colonne A (repère de données).
7. Ajout du nom de la feuille
-
Écrit le nom de la feuille dans une colonne juste après les données.
8. Copie ligne par ligne vers la Synthèse
-
Trouve la première ligne vide dans Synthèse, puis y copie la ligne.
🎓 Pourquoi c’est utile ?
-
Gagner du temps au lieu de copier-coller feuille par feuille.
-
Conserver la trace de la source des données (grâce au nom de la feuille).
-
Créer un tableau unique pour des TCD, filtres, ou exports.
Commentaires
Enregistrer un commentaire