Compiler des fichiers avec une routine VBA

Rapou

XLDnaute Nouveau
Bonjour à toutes et tous,

Je me permets de solliciter votre aide car je passe mon week-end et mes nuits sur un problème de compilation de plusieurs fichiers Excel (fermés mais dans le même répertoire).

Problème:
je dois agréger plusieurs dizaines de fichiers dans un seul pour en faire la synthèse (exploitée avec tableau croisés dynamique). Les fichiers sources n'ont pas de noms structurés mais je récupère les informations d'un onglet identique dans chaque fichier source. Ces onglets sont déjà bardés de formules dans les fichiers sources. Je ne remonte pas que des chiffres mais aussi des dates et du texte. La feuille cible devrait correspondre à l'empilement de toutes les feuilles sources de manière à pouvoir ensuite utiliser l'ensemble avec un tableau croisé dynamique. En revanche, cette compilation doit être liée aux différents fichiers sources (ou exécutable rapidement) car ces fichiers sources seront mis à jour régulièrement.
J'espère être à peu près clair ; j'ai joint un exemple très simplifié.

En cours:
J'ai réalisé une formule pour faire cette compilation qui fonctionne (visible dans l'exemple joint) mais elle est trop lourde et mon ordinateur n'arrive pas à calculer la feuille de compilation, même en tournant plusieurs heures ; la feuille de compilation est relativement grande (20 colonnes x 6000 lignes). J'imagine (peut-être à tort), que la solution se trouve dans une routine VBA.

Solution :
Si quelqu'un parmi vous a l'amabilité de se pencher un instant sur mon souci, je lui en serai vraiment très très reconnaissant.
Je vous remercie infiniment pour votre aide.

Bien à vous,
Simon

PS. j'utilise Excel 2010

La formule en question : =IndirectEx("'"&'Liste des fichiers fournisseurs'!$C$2&"["&RECHERCHEV($B4;'Liste des fichiers fournisseurs'!$A$6:$C$9;3;FAUX)&"]"&'Liste des fichiers fournisseurs'!$C$4&"'!"&D$2&$C4)

IndirectEx : une formule trouvée et équivalente à INDIRECT sur des fichiers fermés.
 

Pièces jointes

  • exemple.zip
    106.4 KB · Affichages: 59
  • exemple.zip
    106.4 KB · Affichages: 56

Lone-wolf

XLDnaute Barbatruc
Re : Compiler des fichiers avec une routine VBA

Bonjour Rapou,

en PJ, le module à importer. Ensuite copie ceci, mais il faudra l'adapter à tes besoins.


Code:
Sub Exportation()
Dim  plg As Range

chemin(1) = "D:\Dossiers Excel\The Best Of VBA\Commerciaux\"
fichier(1) = "Source.xls"
feuille(1) = "Feuil1"
cellules(1) = "a1:b23"

chemin(2) = "D:\Dossiers Excel\Formules\"
fichier(2) = "Moyennes.xls"
feuille(2) = "Feuil1"
cellules(2) = "c1:i23"

chemin(3) = "D:\Dossiers Excel\Divers\"
fichier(3) = "Ecart-Types.xls"
feuille(3) = "Feuil1"
cellules(3) = "c1:i23"

chemin(4) = "C:\Users\Pasqualino\Donnees Medianes\"
fichier(4) = "Medianes.xls"
feuille(4) = "Feuil1"
cellules(4) = "c1:i23"

chemin(5) = "D:\Divers\Total Points\"
fichier(5) = "Total Points.xls"
feuille(5) = "Feuil1"
cellules(5) = "c1:i23"

With Feuil2
Set plg = .Range("a3:a24")
For Each cel In plg
GetData chemin(1) & fichier(1), feuille(1), cellules(1), Feuil2.Range("a2"), True, True
GetData chemin(2) & fichier(2), feuille(2), cellules(2), Feuil2.Range("c2"), True, True
GetData chemin(3) & fichier(3), feuille(3), cellules(3), Feuil2.Range("k2"), True, True
GetData chemin(4) & fichier(4), feuille(4), cellules(4), Feuil2.Range("s2"), True, True
GetData chemin(5) & fichier(5), feuille(5), cellules(5), Feuil2.Range("aa2"), True, True
Next cel
Feuil2.Columns("a:ax").AutoFit
Feuil3.Columns("a:ax").AutoFit

End Sub


A+ :cool:
 

Pièces jointes

  • FunctionsModule.zip
    1.5 KB · Affichages: 49
Dernière édition:

Rapou

XLDnaute Nouveau
Re : Compiler des fichiers avec une routine VBA

Bonsoir Lone-wolf,

Tout d'abord un grand merci pour ton aide ; je n'ai pas encore testé la méthode que tu me proposes car mes yeux ont rendu l'âme à force de rester scotchés sur l'écran jours et nuits, mais je ne doute pas que ta trame va m'aider à sortir de mes bidouilles fastidieuses et permettre à mes tableaux de s'alimenter plus rapidement.

C'est la deuxième fois que j'utilise un/ce forum pour une requête et je suis toujours impressionné par la vitesse et la qualité des réponses.

Encore un grand merci pour ton aide! Rassure-toi, en écho à ta maxime, je ne vais pas à la facilité et cherche toujours à m'en sortir seul (parfois trop sans doute) ; c'est ce qui me fait explorer, donc apprendre et progresser...

Très bonne semaine

Simon
 

néné06

XLDnaute Accro
Re : Compiler des fichiers avec une routine VBA

Bonjour à tous,

D'après ce que j'ai compris:confused:, peut-être ai-je tout faux :mad:?

-Placer les quatre classeurs dans un DOSSIER !
-Lancer "Compilation"
-Voir le résultat ?

A+

René
 

Pièces jointes

  • Compilation.xlsm
    22.2 KB · Affichages: 92
  • Compilation.xlsm
    22.2 KB · Affichages: 84
  • Copie de exemple 1 - x- V1.xlsm
    23.7 KB · Affichages: 63
  • Copie de exemple 2 - YyYyYy- V1.xlsm
    23.7 KB · Affichages: 50
  • Copie de exemple 3 - zz - V2.xlsm
    23.7 KB · Affichages: 49

Rapou

XLDnaute Nouveau
Re : Compiler des fichiers avec une routine VBA

Bonjour René,

Visiblement tu as tout compris et tu as même fait mieux que je n'avais espéré! Tout me semble limpide et avec encore plus d'automatisme que ce que j'avais entrepris de mettre en place!! Dire que j'ai passé 4 jours et 2 nuits pour pondre quelque-chose de 10 fois moins performant que ce que tu m'as envoyé... Mais je ne regrette rien, j'ai appris. Je suis un besogneux...

Donc, un ENORME MERCI!!!

Peut-être que la prochaine fois j'appellerai à l'aide après seulement 2 jours et une nuit d'acharnement...
Merci aussi à toutes les bonnes volontés de ce forum qui m'est devenu si précieux.

Simon
 

Discussions similaires