Parfois, nous voulons fusionner plusieurs feuilles en une seule feuille afin de pouvoir facilement analyser les données et les transformer en informations utiles. Cet article vous explique comment fusionner plusieurs feuilles de calcul en une seule feuille de calcul à l’aide de VBA.

Exemple:

008

Ici, j’ai récupéré des données du serveur qui renvoie des données dans différentes feuilles de calcul. J’ai ajouté une feuille de plus et l’ai nommée «Master». Les autres noms de feuille n’ont pas d’importance.

Exécutez maintenant cette macro.

Sub Merge_Sheets()

Dim startRow, startCol, lastRow, lastCol As Long

Dim headers As Range

'Set Master sheet for consolidation

Set mtr = Worksheets("Master")

Set wb = ThisWorkbook

'Get Headers

Set headers = Application.InputBox("Select the Headers", Type:=8)

'Copy Headers into master

headers.Copy mtr.Range("A1")

startRow = headers.Row + 1

startCol = headers.Column

Debug.Print startRow, startCol

'loop through all sheets

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

Worksheets("Master").Activate

End Sub

Comment fusionner des feuilles en utilisant cette macro VBA?

  1. Insérez une nouvelle feuille et nommez-la «Master» dans le classeur. Renommez-le plus tard si vous le souhaitez.

  2. Insérez un module dans l’éditeur VBA et copiez au-dessus du code VBA.

  3. Exécutez la macro.

  4. Il vous sera demandé de sélectionner des titres. Sélectionnez le titre et appuyez sur OK.

Et c’est fait. Toutes les feuilles sont fusionnées dans master.

0012

Comment ça marche?

Je suppose que vous connaissez les bases de la création d’objets et de variables dans VBA. dans la première partie, nous avons créé des objets et des variables dont nous aurons besoin dans nos opérations.

Eh bien, la plupart des choses que j’ai expliquées en utilisant des commentaires dans le code vba.

Regardons la partie principale de ce code vba.

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

Dans les articles précédents, nous avons appris à parcourir les feuilles et à obtenir la dernière ligne et la dernière colonne à l’aide de vba.

Ici, nous parcourons chaque feuille du classeur principal en utilisant la boucle for.

Pour chaque ws dans wb.Worksheets Ensuite, nous excluons la feuille «maître» du bouclage, puisque nous consoliderons nos données dans cette feuille.

Ensuite, nous obtenons la dernière ligne et le dernier numéro de colonne.

Maintenant, la ligne suivante est très importante. Nous avons effectué plusieurs opérations en une seule ligne.

Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copier _ mtr.Range (« A » & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)

Nous formons d’abord une plage en utilisant startRow, startCol et lastRow et lastCol.

Range(Cells(startRow, startCol), Cells(lastRow, lastCol))

We have copied it using copy method of range.

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy

We pasted it directly into first blank cell after last non blank cell in column A of master sheet (mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1).

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

Cette boucle s’exécute pour toutes les feuilles et copie les données de chaque feuille dans la feuille principale.

Enfin, à la fin de la macro, nous activons la feuille de référence pour voir la sortie.

Alors oui les gars, voici comment vous pouvez fusionner chaque feuille dans un classeur. Faites-moi savoir si vous avez des questions concernant ce code VBA ou tout autre sujet Excel dans la section commentaires ci-dessous.

Télécharger le fichier:

`link: /wp-content-uploads-2019-11-Consolidate_Merge-multiple-worksheets-into-one-master-sheet-using-VBA.xls [__ Consolidate_Merge plusieurs feuilles de calcul en une seule feuille principale en utilisant VBA]

Articles liés:

Comment parcourir les feuilles

comment obtenir la dernière ligne et colonne en utilisant vba

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016]

link: / menus-toolbars-status bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur la barre d’état Excel VBA]

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016]

Articles populaires:

link: / formulas-and-functions-introduction-of-vlookup-function [La fonction RECHERCHEV dans Excel]

lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016]

link: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel]