Récupérer des données dans plusieurs fichiers Excel
Salut à tous,
débutant en codage, je suis à la recherche d'une macro excel.
Je n'ai rien trouvé sur internet qui me corresponde, du coup je m'en remet à votre aide: Alors, j'ai un tableau dans un premier fichier qui fait environ 1600 lignes et 28 colonnes, avec des nouvelles lignes qui s'ajoutent tous les jours. En parallèle de ce tableau, il y a un fichier excel différent pour chacune des lignes, avec 5 feuilles par fichier. Les données dans le tableau et les fichiers sont différentes, et j'aurais aimé récupérer des données de ces fichiers annexes (mais pas toutes) pour les inclure dans de nouvelles colonnes du tableau original, de manière automatique pour les lignes existantes comme pour les futures.
Une autre difficulté est que les fichiers annexes n'ont pas tous le même format, c'est à dire que ils n'ont pas tous le même nombre de lignes/colonnes de données à récupérer. De plus, ils sont tous répartis dans différents dossiers eux-mêmes dans un autre dossier.
On a bien le lien entre le fichier principal et ses annexes, grâce à un numéro d'index (idx).
J'ai une première piste pour cette macro, mais vu que je suis une bille en codage ça me parait compliqué à réaliser par moi même:
"Je pense que j'aurais essayé de faire une macro dans le fichier principal avec un algorithme du style :
- boucle sur la colonne idx
- ouvrir le fichier annexe au chemin "C:\..." + Index + ".xlsx"
- Récupérer dans ce fichier la dernière ligne non vide des colonnes qui t'intéressent, ex. pour le Surcout dans la feuille "Impacts" : .Cells(.Rows.Count, 10).End(xlUp).Row pour récupérer le numéro de la dernière ligne non vide de la colonne 10 (= colonne J)
- Mettre à jour ton tableau principal avec le contenu de la cellule .Cells(DerniereLigneNonVide, TaColonne)"
Voila voila, tout est dit.
Si je me suis mal exprimé et que vous avez des questions, hésitez pas.
Merci la commu!
Corentin
Sub compilation()
Dim sh As Worksheet, aa, fin&, fin1&
Sheets("base de donnees").Cells.Clear
For Each sh In Worksheets
If Not sh.Name = "base de donn?es" Then
aa = sh.Range("A2:O" & sh.Range("B" & Rows.Count).End(xlUp).Row)
With Sheets("base de donnees")
fin = .Range("B" & Rows.Count).End(3).Row + 1
fin1 = .Range("C" & Rows.Count).End(3).Row + 1
If fin1 > fin Then fin = fin1
.Cells(fin, 1).Resize(UBound(aa), UBound(aa, 2)).FormulaLocal = aa
End With
End If
Next
End Subc'est une macro que Paritc m'a fait pour le même genre de problème, remplace avec tes nom de feuille et si ta toujoujours le problème met un fichier exemple. Et met la macro dans un module
Salut Soma,
Merci pour ta réponse.
Je ne comprends pas grand chose à cette macro ^^'
Aussi, je ne vois pas à quel moment la macro suis le chemin qu'on lui donne pour aller chercher d'autres fichiers annexes?
Elle te permet juste de regrouper les donnés, je ne suis pas bon du tous en macro désolé