Récupération des données de plusieurs fichiers d'un même dossier

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nainfa

XLDnaute Junior
Bonjour le forum,

Tout d’abord, un grand merci à ceux qui prendront la peine de me lire.

J’utilise Microsoft Office Professionnel Plus 2010. Ma version est la 14.0.4760.1000 (32 bits)

Dans mon exemple, j’ai 3 fichiers (ce nombre est susceptible d’augmenter ou de diminuer) appelés fichier1 ; fichier2 ; fichier3 (sans surprise, ces noms de ces fichiers ne sont que des exemples). On va dire qu’ils sont situés au chemin d’accès suivant : C:\Users\Utilisateur\Desktop\dossier test

Ces fichiers contiennent chacun des données dans les cellules suivantes :
- feuille 1 A1 C6 F5
- feuille 2 A4 E6 H6

Dans un nouveau fichier (que j’ai appelé « fichier à obtenir), je cherche à avoir une macro qui va aller dans chaque fichier excel du « dossier test » pour récupérer le nom de fichier et les données et me les copier sous la forme suivante :

Colonne A : nom du fichier
Colonne B : valeur de la cellule A1 de la feuille 1
Colonne C : valeur de la cellule C6 de la feuille 1
Colonne D : valeur de la cellule F5 de la feuille 1
Colonne E : valeur de la cellule A4 de la feuille 2
Colonne F : valeur de la cellule E6 de la feuille 2
Colonne G : valeur de la cellule H6 de la feuille 2

Je cherche à avoir une ligne par fichier, sachant que la ligne 1 doit rester inchangée (elle contiendra des titres).

J’espère que mes explications sont claires. Mais si ce n’est pas le cas, n’hésitez pas à me poser toutes les questions que vous avez. Je joins un exemple au topic.

Mes recherches de sujets similaires sont restées infructueuses mais si vous en avez, n'hésitez pas à me donner les liens.

Bonne journée à tous,

Guillaume / Nainfa
 

Pièces jointes

Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour phil75016, salut Theze,

Ceci fonctionnera, mais seulement si le fichier source est ouvert :

Code:
Range("D" & I).Formula = "=OFFSET('" & Chemin & Fichier & "'!TOTAUXH,,11)"
Si vous voulez pouvoir utiliser le fichier source fermé, nommez CIBLE la cellule recherchée :

Code:
Range("D" & I).Formula = "='" & Chemin & Fichier & "'!CIBLE"
A+
 
Re : Récupération des données de plusieurs fichiers d'un même dossier

bonjour Job75
Je vous remercie. Effectivement, j'aurais souhaité récupérer les données sans avoir à ouvrir les fichiers pour accélérer le processus. Cependant, mes fichiers (+ de 200) n'ont pas les cellules "CIBLE" nommées.
J'ai constaté également qu'il y avait un problème si les onglets contenaient un espace ou si une cellule nommée contenait un _.
Je pense que je vais continuer à faire comme j'ai toujours fait, c'est à dire une macro qui ouvre tous les dossiers et récupère les infos dont j'ai besoin. C'est peut être plus long mais au moins c'est plus facile!! lol
 
Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour,

Je ne comprend pas, tu dis que si "TOTAUXH" est le nom de la cellule B20 il te retourne L11 ? C'est bizarre, car un offset de 11 colonnes en ligne 20 ne peut retourner l'adresse de la cellule L11 ???
Contrôle tes noms de range pour voir si il n'y a pas conflit ! Teste en nommant B20 de façon différente (adapte dans la formule) pour voir, il doit te retourner M20.

Hervé.
 
Re : Récupération des données de plusieurs fichiers d'un même dossier

Désolé, je viens de me rendre compte que la macro bloque au niveau de la ligne :

Range("A" & I).Offset(0, 2).Formula = "='" & Chemin & "[" & Fichier & "]feuille 1'!" & Range("TOTAUXH").Offset(11, 0).Address(0, 0)

Le message d'erreur est "erreur d'exécution 1004" "La méthode range de l'objet global a échoué"

Je joins les fichiers à titre d'exemple.

Merci pour votre assistance
 

Pièces jointes

Re : Récupération des données de plusieurs fichiers d'un même dossier

Bonjour,

Je souhaiterais appliquer cette macro cependant je souhaiterais également qu'elle parcours les sous dossier ?

Sub TousLesDossiers(LeDossier$, i As Long)
Dim fso As Object, Dossier As Object
Dim sousRep As Object, Flder As Object
Dim Fichier As String
Dim chemin As String

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)


'examen du dossier courant

For Each Flder In Dossier.SubFolders
Fichier = Dir(Flder.Path & "\*.xls*")


'boucle sur tous les classeurs afin de récupérer les valeurs dans la feuille 1 ("feuille 1") et la feuille 2 ("Feuil2")
'adapter le nom des feuille

Do While Fichier <> ""
i = i + 1
Range("A" & i).Value = Fichier
Range("A" & i).Offset(0, 1).Formula = "='" & chemin & "[" & Fichier & "]feuille1'!E21"


'et ne garde que les valeurs
Range("A" & i).Offset(0, 1).Value = Range("A" & i).Offset(0, 1).Value


Fichier = Dir
Loop
Next

'traitement récursif des sous dossiers
For Each sousRep In Dossier.SubFolders
TousLesDossiers sousRep.Path, i
Next sousRep
Set fso = Nothing
End Sub 'fs
Sub test()
TousLesDossiers "C:\Documents and Settings\moi\Mes documents\", 1
End Sub



Ce code fonctionne mais lors du changement de dossier il me demande ou se trouve le fichier


Merci a vous 🙂
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
37
Affichages
718
Retour