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 :
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
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
il marche uniquement lorsque la valeur proche n'est pas rentré et ne m'extrait donc pas les bonnes valeurs
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)
Merci d'avance pour votre aide
Partager