Bonjour,
J'aurais besoin d'aide sur une macro VB que je tente de créer.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 :
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
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 expliquerpour 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.
Partager