Copier une ou plusieurs colonnes de chaque feuille dans une feuille en utilisant VBA dans Microsoft Excel
Parfois, copier des données de plusieurs feuilles pour la même colonne devient un travail de routine. Cette étape peut être évitée grâce à l’automatisation. Si vous souhaitez créer une feuille consolidée après avoir copié les données d’une colonne de chaque feuille dans une seule feuille, vous devez lire cet article.
Dans cet article, nous allons créer une macro pour copier les données d’une colonne spécifique et les coller dans une nouvelle feuille.
Les données brutes pour cet exemple se composent de données sur les employés sous la forme d’un classeur Excel contenant trois feuilles avec les coordonnées du service, des personnes et des contacts des employés.
Pour copier des données de différentes feuilles dans une nouvelle feuille, nous avons créé une macro «CopyColumns». Cette macro peut être exécutée en cliquant sur le bouton «Exécuter la macro» sur la feuille «principale».
La macro «CopyColumns» insérera une nouvelle feuille nommée «Master» après la feuille «Main». La feuille «principale» contiendra les données consolidées de toutes les feuilles.
Explication du code
Feuilles de travail.Ajouter (après: = Feuilles de travail (« Principal »))
Le code ci-dessus est utilisé pour insérer de nouvelles feuilles de calcul après la feuille de calcul «principale».
Si Source.Name <> « Master » et Source.Name <> « Main » Then End If Above code est utilisé pour restreindre la copie des données des feuilles « Master » et « Main ».
Source.UsedRange.Copy Destination.Columns (Last)
Le code ci-dessus est utilisé pour copier les données de la feuille source vers la feuille de destination.
Pour chaque source dans ThisWorkbook.Worksheets Si Source.Name = « Master » Alors MsgBox « La feuille maître existe déjà »
Exit Sub End If Next Above code est utilisé pour vérifier si la feuille «Master» existe déjà dans le classeur. La macro arrêtera l’exécution si la feuille «principale» existe déjà dans le classeur.
Veuillez suivre ci-dessous pour le code
Option Explicit Sub CopyColumns() Dim Source As Worksheet Dim Destination As Worksheet Dim Last As Long Application.ScreenUpdating = False 'Checking whether "Master" sheet already exists in the workbook For Each Source In ThisWorkbook.Worksheets If Source.Name = "Master" Then MsgBox "Master sheet already exist" Exit Sub End If Next 'Inserting new worksheets in the workbook Set Destination = Worksheets.Add(after:=Worksheets("Main")) 'Renaming the worksheet Destination.Name = "Master" 'Looping through the worksheets in the workbook For Each Source In ThisWorkbook.Worksheets If Source.Name <> "Master" And Source.Name <> "Main" Then 'Finding the last column from the destination sheet Last = Destination.Range("A1").SpecialCells(xlCellTypeLastCell).Column If Last = 1 Then 'Pasting the data in the destination sheet Source.UsedRange.Copy Destination.Columns(Last) Else Source.UsedRange.Copy Destination.Columns(Last + 1) End If End If Next Columns.AutoFit Application.ScreenUpdating = True End Sub
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]