XL 2016 Comment accèder aux fichiers d'un dossier dont on ne connait d'un partie du nom du dossier

Flx1er

XLDnaute Occasionnel
Bonjour,
Je n'ai pas la moindre idée pour résoudre mon problème.
Je désire sélectionner en vba un dossier pour accèdes aux fichiers qu'il contient, mais une partie du nom de ce dossier est variable.
Exemple du nom du dossier D\DossierParent\592222.2019.12.jjmmaaaahhmm.in\
ou "jjmmaaaahhmm" est la partie variable correspondant à la date et heure d'un traitement externe.

Par analogie, avec l'invite de commande en tapant dir D\DossierParent\592222.2019.12.*.in , j'arrive à me position sur le dossier désiré

Comment faire une macro en vba pour accéder aux fichiers dont une partie du nom du répertoire père est inconnu.
En vous remerciant
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Flx,
Essayez cela :
VB:
Sub test()
  Dim fld As FileDialog
  Dim strFilePath As String
  Set fld = Application.FileDialog(msoFileDialogOpen)
  With fld
    .InitialFileName = "D\DossierParent\592222.2019.12.*"
    .Show
  End With
End Sub
Il vous listera tous les dossiers qui commencent par 592222.2019.12.
Evidemment vous n'accéderez pas directement aux fichiers mais aux dossiers, à vous de choisir le dossiez qui vous intéresse.
 

Flx1er

XLDnaute Occasionnel
Bonjour sylvanu,
merci pour réponse rapide et précise.
J'apporte un complément d'information, j'ai plusieurs dossiers qui commence par 592222.2019.12., mais je dois sélectionner que le dossier finissant par ".in". J'ai donc modifié la ligne
VB:
.InitialFileName = "D\DossierParent\592222.2019.12.*"
en
VB:
.InitialFileName = "D\DossierParent\592222.2019.12.*.in"
Lors de exécution, j'obtiens l'ensemble des dossiers que contient le le dossier père.
L'énoncé de départ était mal posé. Je désire sélectionner le dossier D\DossierParent\592222.2019.12.*.in pour pouvoir poursuivre les futurs traitements

Bien à vous
 

patricktoulon

XLDnaute Barbatruc
bonjour
sylvanu tu a oublié les ":"

pour le nom complet d'un dossier avec inconu
d'abord un dir le dossier avec partie inconnue
ok si il existe on l'a trouvé

ensuite le initialfilname du FileDialog
il te faut chopper le 1er fichier ( pareil même punition un dir avec avec inconnu)

conclusion
VB:
Sub test()
    Dim fld As FileDialog, Mondossier$
    racine = "D:\DossierParent\"
    Mondossier = Dir(racine & "592222.2019.12.*.in", vbDirectory)
    If Mondossier <> "" Then
        Set fld = Application.FileDialog(msoFileDialogOpen)
        With fld
            .InitialFileName = (racine & Mondossier & "\*.*") 'chemin complet depuis la racine!!!!!!!!!!!!!!
            .Show
        End With
    Else
        MsgBox "il  n'y a pas de dossier terminant par ""in"" et commencant par ""592222.2019.12."""
    End If
End Sub
et là ta boite de dialog s'ouvre bien dans le "D:\...\..in"

bien trop souvent certains oublient que dir renvoie le nom du dossier
et non le chemin complet;)
il faut donc re concaténer
 
Dernière édition:

Flx1er

XLDnaute Occasionnel
Pouvons nous contourner le problème.
En effet, le fichier txt à chercher puis à traiter qui se trouve sous D:\DossierParent\592222.2019.12.*.in\ .
Le nom du fichier est formaté de la manière suivante 592222.2019.12.ori.txt.
Où 2019 et 12 correspondent à la période de traitement.
Donc, ne serait-il pas possible de rechercher directement le fichier ?
Ma question est la suivante, comment rechercher un fichier dans dossier et/ou sous dossier

En vous remerciant de votre aide.
 

patricktoulon

XLDnaute Barbatruc
si les suffixe de nom de fichier correspondent a ceux du dossier
regarde comment je fait pour choper le chemin complet de ton fichier "....2019.12.ori.txt
sans gestion d'erreur(il faudra y penser bien évidement )

VB:
Sub test2()
    année = 2019
    mois = 12
    racine = "D:\DossierParent\"
    Mondossier = Dir(racine & "592222." & année & "." & mois & ".*.in", vbDirectory)    'on cherche dossier
    monfichier = Dir(racine & Mondossier & "\592222." & année & "." & mois & ".ori.txt")    'on cherche le fichier txt"
    MsgBox "chemin complet pour acceder au fichier""....ori.txt" & vbCrLf & racine & Mondossier & "\" & monfichier
End Sub
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko