Macro sur fichiers dans dossiers séparés
Résolu
cletess
Messages postés
40
Statut
Membre
-
cletess Messages postés 40 Statut Membre -
cletess Messages postés 40 Statut Membre -
Bonjour,
j'ai une liste de ~1000 dossiers comprenant tous (entre autres) un fichier 'information.xlsx'. Voir ici un exemple de 5 dossiers :

A partir du fichier test.xlsx repris dans le répertoire, je dois lister le nom de chacun de ces dossiers et pour chacun d'eux aller récupérer des données reprises dans chaque fichier information.xlsx. Je parviens à faire ces deux étapes de façon indépendante mais je n'arrive pas à les combiner.
Pour l'heure, je récupère les noms de dossiers avec cette macro :
Auriez-vous quelques piste sur comment améliorer la macro ci-dessus pour ouvrir chacun de ces dossiers et appliquer une quelconque opération sur le fichier information.xlsx ?
Je crois devoir utiliser la méthode Workbooks.Open(Path & "information.xlsx") en faisant référence à objSubFolder.Path mais je ne parviens pas à le faire.
Auriez-vous quelques indications ? Merci d'avance !!
CL
j'ai une liste de ~1000 dossiers comprenant tous (entre autres) un fichier 'information.xlsx'. Voir ici un exemple de 5 dossiers :

A partir du fichier test.xlsx repris dans le répertoire, je dois lister le nom de chacun de ces dossiers et pour chacun d'eux aller récupérer des données reprises dans chaque fichier information.xlsx. Je parviens à faire ces deux étapes de façon indépendante mais je n'arrive pas à les combiner.
Pour l'heure, je récupère les noms de dossiers avec cette macro :
Sub PrintFolders() Dim objFSO As Object Dim objFolder As Object Dim objSubFolder As Object Dim i As Integer Application.StatusBar = "" 'Create an instance of the FileSystemObject Set objFSO = CreateObject("Scripting.FileSystemObject") 'Get the folder object Set objFolder = objFSO.GetFolder("C:\Users\Macro_test") i = 1 'loops through each folder in the directory and prints their names and path For Each objSubFolder In objFolder.subfolders Application.StatusBar = objSubFolder.Path & " " & objSubFolder.Name 'print folder name Cells(i + 1, 1) = objSubFolder.Name i = i + 1 Next objSubFolder End Sub
Auriez-vous quelques piste sur comment améliorer la macro ci-dessus pour ouvrir chacun de ces dossiers et appliquer une quelconque opération sur le fichier information.xlsx ?
Je crois devoir utiliser la méthode Workbooks.Open(Path & "information.xlsx") en faisant référence à objSubFolder.Path mais je ne parviens pas à le faire.
Auriez-vous quelques indications ? Merci d'avance !!
CL
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Macro sur fichiers dans dossiers séparés
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Wetransfer gratuit fichiers lourd - Guide
Voici à quoi j'arrive :
En somme, je cherche à ce que la macro ouvre chaque dossier, en liste le nom, ouvre le fichier txt et le convertisse en xlsx, et extraie certaines informations des fichiers xlsx dans le fichier source.
Il me semble que ça fait ce que ça doit faire mais ça me parait (excusez moi l'expression) assez 'bordélique' comme code. J'ai un peu bidouillé différentes macro pour les combiner et je ne sais pas trop comment vérifier le travail !
Je suis forcé d'avouer que je ne suis pas une fleche en VBA alors je procède fort en essais/erreurs
Aussi, la macro est assez lente sur les ~1000 dossiers que je dois traiter. Auriez-vous des idées pour l'optimiser ?
Merci d'avance
CL
en tous cas, moi j'essaierais, au lieu de ceci:
de faire cela:
Merci pour votre aide !
Merci !