Extraire deux colonnes identiques de plusieurs feuilles
Bonjour,
Je vous expose mon problème.
Je possède un script VBA qui me permet de cliquer sur un bouton, ce dernier m'ouvre un explorateur Windows.
Suite à ça je choisi un fichier en entrée, le reste du script permet de copier le contenu des colonnes A et B de la première feuille du fichier en entrée et de copier le contenu dans un autre fichier excel qui contient le script.
Ce que j'aimerai faire maintenant c'est de pouvoir copier les colonnes A et B des feuilles 1, 2, 3 etc... en cliquant sur ce bouton.
Voici le code que je possède maintenant :
Option Explicit
Private Sub CommandButton1()
Dim Fichier, WbkCopy As Workbook, WbkColle As Workbook
Dim Colonnes(), Col As Integer, Resultat As Variant
'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro)
Set WbkColle = ThisWorkbook
'Nom des entêtes de colonnes à importer
Colonnes = Array("Nom Technique", "Template proposé")
'Sélection du fichier
Fichier = Application.GetOpenFilename("Fichiers Excels, *.xls*")
'En cas de clic sur "ANNULER"
If Fichier <> False Then
'On ouvre le fichier en question
Set WbkCopy = Workbooks.Open(Fichier)
With WbkCopy.Sheets("Defects") '==> NOM de la feuille
'Boucle sur toutes les entêtes des colonnes
For Col = 1 To .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
'teste si l'entête correspond à un des noms des colonnes à copier
Resultat = Application.Match(.Cells(1, Col), Colonnes, 0)
'Si l'entête est trouvée (colonne à copier)
If Not IsError(Resultat) Then
'Copié - Collé ==> NOM de la feuille à coller
.Columns(Col).Copy WbkColle.Sheets("Sheet2").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
End If
Next Col
End With
WbkCopy.Close
End If
Set WbkCopy = Nothing
Set WbkColle = Nothing
End Sub
Auriez-vous une idée sur comment réaliser cet exploit
Merci d'avance pour vos réponses.
Cordialement.
Bonjour,
De ce que j'ai compris.
Option Explicit
Private Sub CommandButton1()
Dim WbkCopy As Workbook, WbkColle As Workbook
Dim Wst As Worksheet
Dim Fichier As Variant
Dim Resultat As Double
Dim Colonnes() As String
Dim Col As Integer
Application.ScreenUpdating = False
'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro)
Set WbkColle = ThisWorkbook
'Nom des entêtes de colonnes à importer
Colonnes = Array("Nom Technique", "Template proposé")
'Sélection du fichier
Fichier = Application.GetOpenFilename("Fichiers Excels, *.xls*")
'En cas de clic sur "ANNULER"
If Fichier <> False Then
'On ouvre le fichier en question
Set WbkCopy = Workbooks.Open(Fichier)
'Pour chaque feuille du classeur actif
For Each Wst In ActiveWorkbook.Worksheets
'Boucle sur toutes les entêtes des colonnes
For Col = 1 To Wst.Cells(1, Columns.Count).End(xlToLeft).Column
'teste si l'entête correspond à un des noms des colonnes à copier
Resultat = Application.Match(Wst.Cells(1, Col), Colonnes, 0)
'Si l'entête est trouvée (colonne à copier)
If Not IsError(Resultat) Then
'Copié - Collé ==> NOM de la feuille à coller
Wst.Columns(Col).Copy WbkColle.Worksheets("Sheet2").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
End If
Next Col
'Prochaine feuille
Next Wst
WbkCopy.Close
End If
Set WbkCopy = Nothing
Set WbkColle = Nothing
End Sub
Ah excuse moi j'ai du mal à me faire comprendre.
En fait j'ai un fichier nommé TdB DCO qui contient 5 feuilles avec des données.
Pour l'instant sur mon script j'arrive à récupérer les données de la première feuille du fichier Tdb et à les rapatrier dans un autre fichier excel appelé Importation avec un bouton (le bouton étant sur la première feuille qui fera office de page d'accueil, mes données quand à elles sont sur la deuxième feuille).
Ce que j'aimerai faire c'est rapatrier les données de la deuxième feuille du fichier TdB (et les données des autres feuilles par la suite) dans une autre feuille du fichier Importation pour ne pas qu'elles soient avec les données que j'ai déjà rapatrié de la première feuille du fichier TdB
Par exemple :
Fichier TdB contient les feuilles : Requierements, Defects, Test Plan, Test Lab etc elles possèdent toutes des données.
Pour l'instant dans le fichier Importation, je récupère les données de Defects dans une feuille.
Mais j'aimerai importer les données de Requierements dans une feuille à part dans le fichier Importation, et ce pour toutes les feuilles du fichier TdB.
Je sais pas si j'ai réussi à me faire comprendre avec ça ^^