Bonjour,

J'aurais besoin d'aide sur une macro VB que je tente de créer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Option Explicit
 
Sub Button3_Click()
Dim Fichier, WbkCopy As Workbook, WbkColle As Workbook
Dim Wst As Worksheet
Dim FEUILLE_DEST As Worksheet
Dim Colonnes(), Col As Integer, Resultat As Variant
 
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
 
                  If Wst.Name = "Requierements" Then
                    Set FEUILLE_DEST = WbkColle.Worksheets("Requierements")
                ElseIf Wst.Name = "Mgmt" Then
                    Set FEUILLE_DEST = WbkColle.Worksheets("Mgmt")
                ElseIf Wst.Name = "Test Plan" Then
                    Set FEUILLE_DEST = WbkColle.Worksheets("Test Plan")
                ElseIf Wst.Name = "Defects" Then
                    Set FEUILLE_DEST = WbkColle.Worksheets("Defects")
                Else: Wst.Name = "Test Lab"
                    Set FEUILLE_DEST = WbkColle.Worksheets("Test Lab")
                End If
 
                'Copié - Collé ==> NOM de la feuille à coller
                Wst.Columns(Col).Copy FEUILLE_DEST.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
Je vous explique ce code me permet d'ouvrir un explorateur Windows et de pouvoir choisir un fichier. Ce fichier contient 5 feuilles, pour chaque feuilles je récupère les deux premières colonnes. Ces deux colonnes sont ensuite copiées dans un autre fichier Excel (qui va me permettre de réaliser des comparaison.) En clair :

Ficher 1 => possède feuilles A B C D E
Récupération des deux première colonnes pour chaque feuilles
Fichier 2 => feuille A (deux premières colonnes de la feuille A du fichier 1 collées)
feuille B (deux premières colonnes de la feuille B du fichier 1 collées)
Etc...

Ce que je cherche à faire maintenant, c'est créer un autre script qui me permettrait de récupérer le contenu d'une colonne (colonne AA) dans un autre fichier (fichier 3 par exemple), et de copier le contenu de ce cette colonne de la même façon que mon premier script dans le fichier 2 Explication :

Mon fichier 3 possède une feuille appelée Customize, dedans il y a une colonne appelée Label possédant plein de valeurs. Ces valeurs sont en quelque sorte rangées grâce à un tri par ordre alphabétique dans deux autres colonnes (PROJECT et Entity). Dans la colonne Label, certaines données sont en lien avec la feuille A du fichier 1, d'autres avec la feuille B du fichier 1, etc...

Ce que je veux faire par exemple :

Dans la feuille nommée Customize

- Dans la colonne PORJECT, il n'y a seulement que deux valeurs (DIGITAL_TEST, TEMPLATE_DCO_A_BLANC). Je fais un filtre que sur la première valeur.

- Dans la colonne Entity, j'ai plus de valeurs (ALL_LISTS, BASELINES, BUG, COMPONENT, COMPONENT_FOLDER, COMPONENT_STEP, CYCL_FOLD, CYCLE, DESSTEPS, FRAMEWORK_PARAM, HOST_GROUP, HOSTS, LIBRARIES, LIBRARY_FOLDERS, LINK, RELEASE_CYCLES, RELEASE_FOLDERS, RELEASES, REQ, REQ_TRACE, RESOURCE_FOLDERS, RESOURCES, RESULTS, RUN, TEST, TEST_PARAMS, TESTCYCL). Cette fois ci je fais un filtre sur REQ

Grâce à ces deux filtres, j'obtiens une liste de 57 valeurs dans la colonne Label. Je voudrai grâce à un script pouvoir coller ces données dans la feuille A du fichier 2 qui contient déjà "(deux premières colonnes de la feuille A du fichier 1)" comme expliqué plus haut. Je veux juste que ces valeurs soient à côtés de celles que j'ai déjà rapatrié (dans la colonne à côté car par la suite je créerai un dernier script qui fera une comparaison automatique entre les données que j'ai récupéré.

Est ce que vous auriez un exemple pour le premier cas que j'ai essayé de vous expliquer pour que je comprenne le principe et que je puisse l'appliquer sur le reste des données que j'ai à récupérer.

Merci d'avance pour vos réponses je sais que mon sujet n'a pas l'air super clair si vous avez des questions je suis là pour y répondre.

Cordialement.