Executer une macro sur un ensemble de fichiers au lieu d'un

Bonjour,

J'ai deja fait du VBA mais bon il y a 10 ans au moins et je suis assez rouillé...

Mon projet consiste à recuperer des infos qui sont dans des fichiers distincts dans des repertoires distincts pour les compiler dans une base unique

J'ai écris une macro qui fonctionne tres bien sur un fichier en local, en gros ca va chercher des données en table et ca les mets en ligne.

Ce que j'ai besoin maintenant est que cette macro soit executé sur l'ensemble des fichiers qui contiennent "gamme" dans leur nom qui sont dans des repertoires différents (1 seul niveau) afin de remplir ma feuille Output. J'aurais besoin que la macro ouvre les 4 fichiers et execute la macro ci dessous pour une ligne supplementaire sur Output (k=k+1)....

Si qq'un a un peu de temps à perdre ca m'arrangerait bien.

Cdt

JM

Sub Extraire()
'
' Recuperation gamme Macro
'

k = 1

' Pour chaque nouveau fichier on ajoutera k = k + 1 pour ajouter une ligne dans outpout
' Ce que j'ai besoin est d'aller chercher Gamme dans l'ensmble des fichiers gamme dans l'ensemble des repertoires au lieu de ThisWorkbook.sheets("gamme")

ThisWorkbook.Sheets("Output").Cells(k, 1).Value = ThisWorkbook.Sheets("Gamme").Cells(5, 1).Value
ThisWorkbook.Sheets("Output").Cells(k, 2).Value = ThisWorkbook.Sheets("Gamme").Cells(5, 4).Value

' Récupération des cotes de la gamme de controle

i = 1
j = 4

Do While (ThisWorkbook.Sheets("Gamme").Cells(i + 8, 2) <> "") Or (ThisWorkbook.Sheets("Gamme").Cells(i + 8, 4) <> "") Or (ThisWorkbook.Sheets("Gamme").Cells(i + 8, 5) <> "") Or (ThisWorkbook.Sheets("Gamme").Cells(i + 8, 6) <> "") Or (ThisWorkbook.Sheets("Gamme").Cells(i + 8, 7) <> "")  'tant qu'il y a des cotes

ThisWorkbook.Sheets("Output").Cells(k, j).Value = ThisWorkbook.Sheets("Gamme").Cells(i + 8, 2).Value
ThisWorkbook.Sheets("Output").Cells(k, j + 1).Value = ThisWorkbook.Sheets("Gamme").Cells(i + 8, 4).Value
ThisWorkbook.Sheets("Output").Cells(k, j + 2).Value = ThisWorkbook.Sheets("Gamme").Cells(i + 8, 5).Value
ThisWorkbook.Sheets("Output").Cells(k, j + 3).Value = ThisWorkbook.Sheets("Gamme").Cells(i + 8, 6).Value
ThisWorkbook.Sheets("Output").Cells(k, j + 4).Value = ThisWorkbook.Sheets("Gamme").Cells(i + 8, 7).Value
i = i + 1
j = j + 5

Loop

' Récupération du nom de cotes de controles

ThisWorkbook.Sheets("Output").Cells(k, 3).Value = i - 1
k = k + 1

End Sub

Mon arborescence de test, je voudrais que ma macro ouvre les 4 fichiers (et pas le reste) et applique le meme code sur la feuille gamme de chaque fichier...

capture xlsm

Bonjour

Depuis la version 2010 on fait cela en quelques clics avec PowerQuery, intégré à Excel sans VBA

Poste 2 fichiers exemples

RE

SI j'ai bien compris l'Output est dans un fichier de synthèse.

Or là je le vois dans la fichier Gamme...

Par ailleurs dans ton arborescence il y a 5 fichiers avec gamme dans le nom

J'ai supposé que le niveau TEST est à ignorer

Modifier le chemin et Données, Actualiser Tout

5gammes-pq.xlsx (25.57 Ko)
Rechercher des sujets similaires à "executer macro ensemble fichiers lieu"