Bonjour à tous,

J'ai énormément de mal à mettre au point un code d'extraction de données.

Je dispose d'un dossier avec plusieurs sous dossiers dans lesquels se trouvent des classeurs excel en nombre aléatoire.
Tous ces classeurs sont tramés de la même façon.

Un code qui me permet de lister sur la colonne "D" de la feuil1 du classeur le Chemin&fichier de tous les éléments dans lesquels je veux extraire des données

Dans le feuil2 j'essaie de mettre au point un code qui à partir de la liste des Chemins&fichiers pourrait m'extraire de chaque élément les lignes de l'onglet "MAQUETTE" dans lesquelles il y a inscrit "Sous total*".

Cependant, le nombre de lignes contenant "Sous-total" est différent dans chaque fichier, le code doit donc insérer un nombre de lignes en fonction.

Pour ce faire, je repars de ce code :

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
 
 
Sub recup()
 
Set f = ThisWorkbook.Sheets("Feuil1")
'parcourir la colonne 4 (à partir de la ligne 7, jusqu'à la dernière cellule non-vide de cette même colonne)
For lig = 7 To f.Cells(Rows.Count, 4).End(xlUp).Row
'ouvrir chaque fichier dont le chemin d'accès et le nom sont renseignés en colonne D
   Workbooks.Open Filename:=f.Cells(lig, 4)
'recopier en colonne F et G de ton fichier (celui contenant la macro), le contenu des cellules A16 et A19, d'une feuille nommée "MAQUETTE DEVIS" dans le ficher qui vient d'être ouvert
   ThisWorkbook.Sheets(2).Cells(lig, 3) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[A18]
    ThisWorkbook.Sheets(2).Cells(lig, 4) = ActiveWorkbook.Sheets("MAQUETTE DEVIS").[A19]
 
    'ThisWorkbook.Sheets(2).Cells(lig, 3) = WorksheetFunction.VLookup(("Sous total").Value, ActiveWorkbook.Sheets("Détail*").Range("A1:J65000"), 2, False)
 
'refermer le fichier (celui dont le nom figure en colonne D)
   ActiveWorkbook.Close savechanges:=False
Next lig
End Sub
je pense qu'avec le code vlookup cela pourrait etre possible mais je n'arrive pas a le finaliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ThisWorkbook.Sheets(2).Cells(lig, 3) = ActiveWorkbook.Sheets("détail (A) (2)").Application.WorksheetFunction.VLookup("Sous total Logistique", Range("A1:J50"), 2)
il marche uniquement lorsque la valeur proche n'est pas rentré et ne m'extrait donc pas les bonnes valeurs


Merci d'avance pour votre aide