Excel VBA fait partie intégrante de l'automatisation d'Excel, et l'utilisation et les avantages de VBA ne peuvent pas être compromis. Si vous êtes dans une bataille difficile en essayant de consolider plusieurs feuilles et classeurs dans Excel, nous sommes là pour vous aider.

Les macros mentionnées dans ce guide vous aideront à réaliser la tâche apparemment insurmontable en quelques secondes (ou minutes, si les actifs de données sont volumineux).

En suivant ce didacticiel, vous créerez votre propre macro VBA dans Excel et fusionnerez efficacement plusieurs feuilles en un seul fichier.

Fusion de plusieurs feuilles Excel en un seul fichier

Pour cette tâche, les données sont stockées dans les feuilles suivantes :

  • Feuille1
  • Feuille2
  • Feuille3

Les noms de feuille énumérés ci-dessus sont uniquement à des fins d'illustration. Cette macro VBA est générique et ne dépend pas des noms de feuille; vous pouvez personnaliser le code pour l'utiliser avec n'importe quel nom de feuille.

Pré-requis pour exécuter le code

Il existe certaines conditions préalables à l'exécution du code VBA répertoriées ci-dessous.

Vous devez stocker le code de la macro dans un nouveau fichier Excel. Enregistrez ce classeur avec un .xlsm extension. Vous pouvez enregistrer le classeur de macros VBA sous n'importe quel nom.

Ouvrez un nouveau fichier Excel; presse Alt + F11 sur votre clavier pour ouvrir l'éditeur Excel VBA. Une fois l'éditeur ouvert, ajoutez un nouveau module de code en cliquant sur le Insérer onglet en haut. Sélectionner Module insérer un nouveau module; c'est là que vous entrerez le code de macro VBA ci-dessous.

Les fiches de données à consolider doivent être dans un autre classeur distinct. Le nom du classeur et des feuilles peut être celui que vous choisissez.

Dès que vous exécutez le code VBA, la macro VBA parcourt chaque feuille de calcul disponible dans le classeur principal (classeur de données) et collez le contenu dans une feuille nouvellement ajoutée dans le même classeur.

Les données consolidées seront disponibles dans la feuille nommée Consolidé.

Exécuter le code VBA

Il est temps d'exécuter le code de macro nouvellement enregistré. Copiez-collez ce code dans le module de l'éditeur VBA :

Sous-consolider_shts()
'déclarer les différentes variables utilisées dans le code et les types de données vba
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Integer, lastrow1 As Integer
'désactiver le scintillement de l'écran et les fenêtres contextuelles d'alerte pendant l'exécution
Avec application
.ScreenUpdating = Faux
.DisplayAlerts = Faux
Terminer par
'stocke le nom du classeur principal dans la variable macro. Remplacez Test.xlsx par le nom de votre classeur principal
Définir wbk1 = Workbooks("Test.xlsx")
'activer le classeur avant d'exécuter la ou les fonctions dessus
wbk1.Activer
'exécutez une boucle for vba pour vérifier si une feuille Consolidated existe déjà. S'il existe, la boucle for le supprimera.
Pour chaque sht dans wbk1.Sheets
Si merde. Nom = "Consolidé" Alors sht. Supprimer
Suivant
'Ajouter une nouvelle feuille pour stocker les données nouvellement consolidées
Feuilles de travail. Ajouter. Nom = "Consolidé"
'Ajouter des en-têtes à chaque colonne individuelle dans la feuille consolidée
Avec des feuilles ("Consolidé")
.Range("a1").Value = "OrderDate"
.Range("b1").Valeur = "Région"
.Range("c1").Valeur = "Rep"
.Range("d1").Valeur = "Article"
.Range("e1").Valeur = "Unités"
.Range("f1").Valeur = "UnitCost"
.Range("g1").Valeur = "Total"

Terminer par
'La feuille consolidée nouvellement créée contiendra les données consolidées de chaque feuille individuelle dans le classeur principal

Pour i = 1 Pour wbk1.Worksheets. Compter
Si Feuilles (i).Nom <> "Consolidé" Alors
'Capturez la dernière ligne remplie à partir des feuilles de données du classeur
lastrow = Sheets (i).Range("a1").End (xlDown).Row
'Capturez la dernière ligne renseignée dans la feuille consolidée
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End (xlUp).Row + 1

'Copier les données de la feuille source et les coller dans la feuille consolidée
Sheets (i).Range("a2:g" & lastrow).Copy Destination :=Sheets("Consolidated").Range("a" & lastrow1)
Fin si
Ensuite je
'Activer les fonctions Excel VBA pour une utilisation future
Avec application
.ScreenUpdating = True
.DisplayAlerts = True
Terminer par

Fin du sous-marin

Le code VBA expliqué

Tout d'abord, déclarez toutes les variables que vous utilisez dans le code et attribuez-leur les types de données VBA corrects pour que le code s'exécute de manière transparente.

Une fois que vous avez déclaré les variables, un entretien de base est nécessaire. Cela se fait en désactivant le scintillement de l'écran et en supprimant les alertes contextuelles. Par exemple, lorsque vous supprimez une feuille existante à l'aide du code VBA, une invite dans Excel demande une confirmation avant de supprimer la feuille. Les invites comme celle-ci sont supprimées pour améliorer la vitesse d'exécution.

À l'étape suivante, vous devez définir le nom du classeur, qui contient toutes vos données. Remplacer Test.xlsx avec le nom et l'extension du nom de votre classeur. Assurez-vous d'entourer le nom de guillemets.

Activez le classeur principal et supprimez toutes les feuilles existantes portant le nom Consolidé pour éliminer toutes les données précédemment stockées. Le code VBA bascule à travers chaque feuille, et dès qu'il rencontre le nom de la feuille Consolidé ça va le supprimer. Cela se fait à l'aide du Instruction VBA SI, qui vérifie les conditions logiques et supprime la feuille dès que la condition est remplie.

Une nouvelle feuille est ajoutée au classeur principal pour stocker les données consolidées. Par la suite, des en-têtes standardisés et préformatés sont ajoutés à cette feuille. Vous pouvez modifier les valeurs des titres (en-têtes de colonne) en mettant à jour les informations en regard des références de cellule entre guillemets.

Par example: .Range("a1") = "Date de commande" peut être remplacé par .Range("a1") = "Numéro de commande"

Ensuite, une boucle VBA FOR bascule à travers chaque feuille de calcul, copie le contenu de la feuille et colle le contenu dans le Consolidé feuille de calcul avant de passer à la feuille suivante du classeur. Ce processus se répète jusqu'à ce que toutes les feuilles soient copiées.

Au cours de ce processus, toutes les lignes sont calculées automatiquement et collées dans la feuille consolidée. La dernière ligne remplie est automatiquement calculée avant que les données ne soient collées. La macro est dynamique et peut s'adapter aux différentes lignes de données dans chaque feuille de calcul.

En rapport: Fonctionnalités avancées de Microsoft Excel que vous devez connaître

Une fois les données de toutes les feuilles collées dans la feuille de consolidation principale, la macro passe à la dernière partie du code. Les fonctions VBA initialement désactivées sont réactivées pour une utilisation future.

Consolidation de plusieurs feuilles à l'aide de la macro Excel VBA

Excel VBA est un langage de programmation superflu, qui fonctionne bien avec tous les composants Excel. Chaque morceau de code est essentiel, et il est important de se rappeler que l'exécution dépend d'un système d'exécution ligne par ligne, vous ne devez donc pas changer l'ordre des lignes de code.

Pour personnaliser le code en fonction de vos besoins, vous pouvez apporter les modifications requises et exécuter ce code pour consolider les données de manière efficace et efficiente en quelques secondes.

5 macros Microsoft Excel sympas pour trier les données

Facilitez la gestion des données avec ces macros Excel.

Lire la suite

PartagerTweeterE-mail
Rubriques connexes
  • La programmation
  • Microsoft Excel
  • Macro
  • La programmation
A propos de l'auteur
Gaurav Siyal (21 articles publiés)

Gaurav Siyal a deux ans d'expérience en rédaction, écrivant pour une série d'entreprises de marketing numérique et de documents sur le cycle de vie des logiciels.

Plus de Gaurav Siyal

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner