Aller chercher des données dans TOUS les fichiers d'un répertoire

F

FUN

Guest
J'ai plus de 800 classeurs de structure identique dans un répertoire. Je cherche à consolider les données. J'avais écrit une macro qui récupérait les données par copier coller (la solution la plus simple que j'avais trouvée) en ouvrant chaque classeur mais elle a disparu dans un crash disque dur et je dois la réécrire. Et je rame, je rame !

C'est pour le boulot, c'est urgent, bref tout va bien. Je ne suis pas un pro du VBA, juste un bon utilisateur d'Excel qui fait une macro de temps en temps.

Mon éternelle reconnaissance à celui ou celle qui peut aider sur ce coup-là.

Fred
 
F

FUN

Guest
Eh eh, merci à toi TI, mais j'ai apparemment résolu mon pb tout seul comme un grand !

Je ne sais pas si le code est bien élégant, mais ça tourne :

Sub recap()
Application.ScreenUpdating = False
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("L:\")
Set fc = f.Files
i = 2
For Each f1 In fc
s = f1.Name
Workbooks.Open Filename:="L:\" & s
Range("BD1:BD44").Select
Range("BD44").Activate
Selection.Copy
Windows("recap2.xls").Activate
Range("A" & i).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, Transpose:=True
i = i + 1
Windows(s).Activate
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
End Sub

Qu'en penses-tu ?
 
T

Ti

Guest
tout cela me semble parfait. Tu peux supprimer Range("BD1:BD44").Select qui est inutile, puisque tu sélectionnes la cellule BD44 juste après.
Par contre, je n'aurais pas sélectionné une fenêtre (Window) mais un fichier (Workbook), mais si ça fonctionne, c'est très bien.
Bon courage
 
F

FUN

Guest
Non ! C'est le range qui m'intéresse. Je vais plutôt faire sauter la sélection.
Bizarrement, ça marche quand même...

J'ai trouvé ce forum par Google (dans la panique) mais je vais garder l'adresse. Elle est précieuse :)

Merci de ton aide

Fred, content de lui :-D
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33