Parcours de plusieurs fichiers

ngallak5

XLDnaute Nouveau
Bonjour le forum,

Je viens vous solliciter pour un code que je n'arrive pas à réaliser actuellement.

En fait, voila j'ai un dossier qui a des sous dossiers et chaque sous dossier a des centaines de fichiers.

Cependant, j'aimerais parcourir les fichiers sans les ouvrir pour récupérer quelques données dedans.

Le sous répertoire sera là où clique l'utilisateur sur la forme créée (userform), et le nom du fichier sera composé selon les choix de l'utilisateur.

Je m'explique : Il y a, dans la forme, n ComboBox et m textBox. Selon ce que l'utilisateur va saisir dedans, on va récupérer les valeurs de chaque composante pour former le nom du fichier.

Ensuite, j'arrive sur une autre feuille Excel contenant un tableau. Et dans ce tableau, je souhaite récupérer des résultats qui sont inscrits dans les fameux dossiers et sous dossiers. Mais, comme il y en a énormément, je ne peux pas faire tout d'un coup sachant que chaque jour, de nouveaux fichiers sont enregistrés dedans.

Donc mon souci c'est de parcourir tous les fichiers selon le nom entré (via la forme) sans les ouvrir.

J'espère m'être fait comprendre.

Merci d'avance

Cordialement,

ngallak5
 

Staple1600

XLDnaute Barbatruc
Re : Parcours de plusieurs fichiers

Bonsoir et bienvenue sur le forum

Tu as été lire les cinq liens des discussions similaires en bas de cette page?

Avec un fichier exemple anonymisé, on serait susceptible d'être plus efficace pour t'aider ;)
(Tu l'aurais su si tu avais lu la charte du forum ...)
 

ngallak5

XLDnaute Nouveau
Re : Parcours de plusieurs fichiers

Bonsoir et bienvenue sur le forum

Tu as été lire les cinq liens des discussions similaires en bas de cette page?

Avec un fichier exemple anonymisé, on serait susceptible d'être plus efficace pour t'aider ;)
(Tu l'aurais su si tu avais lu la charte du forum ...)

Bonjour, merci pour votre réponse mais j avais pas encore lu ses discussions du fait que mon probleme est un peu délica et urgent.
Cependant, je vais voir toutes les discussions aprés je te tiendrais au courant.
Merci et Cordialement.
 

pijaku

XLDnaute Occasionnel
Re : Parcours de plusieurs fichiers

Bonjour,
Staple mes respects du matin,

Une petite question en passant, les données contenues dans ces divers classeurs sont elles toutes au même emplacement? J'entends par là, même nom de feuille et même plage?
Exemple : Feuil1!A1:F10

Si oui, c'est faisable relativement facilement... Relativement bien entendu!
 

ngallak5

XLDnaute Nouveau
Re : Parcours de plusieurs fichiers

Bonjour,
Staple mes respects du matin,

Une petite question en passant, les données contenues dans ces divers classeurs sont elles toutes au même emplacement? J'entends par là, même nom de feuille et même plage?
Exemple : Feuil1!A1:F10

Si oui, c'est faisable relativement facilement... Relativement bien entendu!

Bonjour,
J'essaye de vous explication un peu en détaille :
soit un un répertoire
Dossier
- Dossier-FichierA-dateA.xls
- Dossier-FichierB-dateB.xls
- .......
- Dossier-FichierA-dateA'.xls
- Dossier-FichierN-dateN.xls
Cependant, selon se qui l'utilisateur rentre comme choix dans les userforms (qui va former apres un bout du nom du fichier par exemple FichierA)
Ainsi j 'aimerais avoir un macro qui parcours le dossier pour reconnaitre tous les fichiers qui ont FichierA, et sans les ouvrir elle rentre dedans pour récupérer quelques resultats qu on met dans un autre classeur appeler par exemple Resultat.

NB : si possible aussi gérer les dates pour voir aprés une éventuelle variation

Merci pour tous qui veulent m'aider.
 

pijaku

XLDnaute Occasionnel
Re : Parcours de plusieurs fichiers

Et bien il ne te reste plus qu'à répondre aux questions qu'on te pose.......
Tu dis :
sans les ouvrir elle rentre dedans pour récupérer quelques resultats
Je t'ai demandé :
les données contenues dans ces divers classeurs sont elles toutes au même emplacement? J'entends par là, même nom de feuille et même plage?
Exemple : Feuil1!A1:F10

Je réitère : Où se trouvent tes données? C'est primordial surtout si tu ne souhaites pas ouvrir tes fichiers.........
Dans l'attente...
 

ngallak5

XLDnaute Nouveau
Re : Parcours de plusieurs fichiers

Et bien il ne te reste plus qu'à répondre aux questions qu'on te pose.......
Tu dis :
sans les ouvrir elle rentre dedans pour récupérer quelques resultats
Je t'ai demandé :
les données contenues dans ces divers classeurs sont elles toutes au même emplacement? J'entends par là, même nom de feuille et même plage?
Exemple : Feuil1!A1:F10

Je réitère : Où se trouvent tes données? C'est primordial surtout si tu ne souhaites pas ouvrir tes fichiers.........
Dans l'attente...

Le nom de la feuille est aussi sous forme Dossier-FichierA-qqChose.
et l'emplacement ça depend du dossier ou on est : y en A c'est au meme emplacement et d'ailleurs sur ceux je récupére toute la feuille (sur ceux la c 'est pas grave je m en charge : SELECT FROM * ------)
Mais sur d'autre le nom du fichier toujours avec un bout (Dossier-FichierA--------)aparait sur plusieur lignes collonne A, donc là, y a un parcour à faire et les récuperer pour les mettre sur mon classeur Resultat.
j'espére que je t'est bien répondu.
Merci d'avance.
 

Staple1600

XLDnaute Barbatruc
Re : Parcours de plusieurs fichiers

Bonjour à tous

ngallak5
délicat et urgent sont des mots qui fâchent ici bas :)
(Tu l'aurais su si tu avais la charte du forum) bis repetita ... ;)

Et comme le dit pijaku (que je salue au passage), plus ton message sera fourni en explications claires et en PJ (fichier exemple excel anonymisé), plus tes chances d'avoir des réponses à ta question seront grandes.

(Donc en attendant tout cela, je vais me brosser les dents)

PS: Pour joindre un fichier : Cliques sur Modifier le message -> Gérer les pièces jointes
 
Dernière édition:

pijaku

XLDnaute Occasionnel
Re : Parcours de plusieurs fichiers

Sans ouvrir les fichiers, cela ne va pas être simple. Il te faudra forcément une connexion ADO par exemple.

Cependant, ces deux procédures devraient te permettre de faire plus ou moins ce que tu souhaites, par contre, en ouvrant et fermant les fichiers...
Profite des commentaires....
Procédure 1 : boucle sur tous les fichiers d'un répertoire et de ces sous répertoires :
Code:
'Procédure de boucle sur tous les fichiers du répertoire
'et de ces sous-répertoires
'Passer en paramètres de cette sub :
    'ByVal Nom As String :
    'Nom = le "tag" (mot commun) qui te permet d'identifier tes noms de fichiers
    'ByRef dossier :
    'Dossier = ton répertoire !!!! PAS AU FORMAT STRING !!!! en cas de difficulté, utiliser :
        'Sub arborescenceRepertoire()
        'et
        'Function ChoixDossier()
'sources
'http://www.excel-downloads.com/forum/126930-vba-liste-dossiers-et-sous-dossiers-dun-dosssier.html
Sub Lit_dossier(ByVal Nom As String, ByRef dossier)
Dim f, d

   For Each f In dossier.Files
'Si le nom du fichier contient le contenu de la variable Nom    [If f.Name Like Nom]
'Et qu'il s'agit bien d'un fichier Excel                        [And Left(Split(f.Name, ".")(1), 3) = "xls"]
'alors on lance la procédure VaChercherInfos                    [VaChercherInfos dossier.Path, f.Name]
        If f.Name Like Nom And Left(Split(f.Name, ".")(1), 3) = "xls" Then VaChercherInfos dossier.Path, f.Name
   Next
'Boucle récursive pour les sous-répertoires éventuels
   For Each d In dossier.SubFolders
     Lit_dossier Nom, d
   Next
End Sub
Procédure 2 : ouverture et fermeture de ces classeurs
Code:
Sub VaChercherInfos(ByVal Chemin As String, Fichier As String)
Dim Feuille As Worksheet, WbkRecap As Workbook, WbkSource As Workbook

Application.ScreenUpdating = False
Set WbkRecap = ThisWorkbook
Set WbkSource = Workbooks(Chemin & "\" & Fichier)
'Dans le classeur "récap" (celui-ci), dans la feuille "Feuil1"
With WbkRecap.Sheets("Feuil1")
    'dans la colonne A, en dernière ligne, on inscrit les chemin et nom du fichier source
    .Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = Chemin & "\" & Fichier
    'en dessous, on inscrit la date d'extraction (date du jour)
    .Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = CDate(Date)
End With
Workbooks.Open WbkSource
With WbkSource
    '----------------------------------------
    '
    ' ICI LA PROCEDURE DE RECHERCHE ET D'EXTRACTION DE DONNEES
    '
    '----------------------------------------
    Application.DisplayAlerts = False
    .Close
    Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub

En cas de difficulté pour la variable dossier en ByRef, vous pouvez utiliser :
Code:
Sub arborescenceRepertoire()
'sources
'http://www.excel-downloads.com/forum/126930-vba-liste-dossiers-et-sous-dossiers-dun-dosssier.html
Dim racine As String, fs As Object, dossier_racine, Nom As String

'!!!!!!! déterminer tout de suite le "tag" à utiliser
        'pour les noms de fichiers :
Nom = "TAG"
  racine = ChoixDossier()
  If racine = "" Then Exit Sub
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set dossier_racine = fs.getfolder(racine)
  Lit_dossier Nom, dossier_racine
End Sub

Function ChoixDossier()
If Val(Application.Version) >= 10 Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
            ChoixDossier = .SelectedItems(1)
        Else
            ChoixDossier = ""
        End If
    End With
Else
    ChoixDossier = InputBox("Répertoire?")
End If
End Function

Salut Staple, ça fait plaisir de te croiser sur un sujet aussi épineux... Ne sois pas trop long à te laver les mains, il y a du taf en cas de création de connection ADO...
 
Dernière édition:

ngallak5

XLDnaute Nouveau
Re : Parcours de plusieurs fichiers

Merci pijaku.
Je te tiendrais informer aprés exploitation de ses codes.
en fait, c'est vrai que j'ai des problémes avec les ByRef ou tout simplement les sub avec parametre.
Merci encore une fois.
Cordialement.
 

pijaku

XLDnaute Occasionnel
Re : Parcours de plusieurs fichiers

T'inquiète.
Je viens de recevoir un MP, les fichiers sont en préparation.
De toutes façons, à ce stade, pour toute adaptation d'un code, les fichiers sont devenus indispensables...

Cordialement,

Ps : ou peux t'on, et comment le faire, placer une signature comme tu le fais...
Cordialement,
__________________

JM

Pensez à rendre votre code VBA plus lisible. Merci pour le plaisir de nos yeux
VB:
 ICI CODE VBA
 

Discussions similaires

Réponses
3
Affichages
205
Réponses
2
Affichages
560
  • Question Question
Réponses
16
Affichages
670
  • Question Question
Microsoft 365 Ouverture de fichier
Réponses
36
Affichages
2 K