Comment utiliser "FileName" avec plusieurs choix ?

nenette_cherie Messages postés 17 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 28 avril 2006 - 26 avril 2006 à 13:05
nenette_cherie Messages postés 17 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 28 avril 2006 - 28 avril 2006 à 09:11
Bonjour,

Je travaille actuellement avec Access 2003 et je me suis un peu cassée la tête sur ce bout de code que j'avais relevé sur le net, afin de lister tous les fichiers d'un dossier particulier (Me.txtPath.Value est le chemin du dossier en fait) :

With Application.FileSearch
        If Not IsNull(Me.txtPath.Value) Then
            .LookIn = Me.txtPath.Value
            .FileName = "*.xml" 'je filtre les éléments car seuls les xml (et les txt) m'intéresse pour les exploiter après.
            If .Execute > 0 Then
                Me.filesFound.Caption = "File(s) Found :" & .FoundFiles.Count 'affichage du nombre de fichiers trouvés
                For I = 1 To .FoundFiles.Count
                    txtName = txtName & Replace(.FoundFiles(I), (Me.txtPath.Value & ""), "") & vbCrLf
                Next I
                Me.txtPatFiles.Value = txtName 'affichage de la liste dans le formulaire
            Else
                Me.txtPatFiles.Value = Null
                Me.filesFound.Caption = "File Found : 0"
            End If
        Else
            Me.txtPatFiles.Value = Null
            Me.filesFound.Caption = "File(s) Found :"
        End If
    End With

Il fonctionne très bien mais le problème, c'est qu'à l'heure actuelle, je ne filtre que les xml. Or j'aimerais également les .txt ! J'ai cherché autant que j'ai pu mais n'ai pas trouvé comment on pouvais rajouter simplement dans le Filename, le filtre .txt. J'ai essayé :

.FileName = "*.xml" | "*.txt"
.FileName = "*.xml|*.txt"
.FileName = "*.xml" Or "*.txt".FileName "*.xml" puis juste après  .FileName "*.txt" (mais je n'ai que les txt)

Aucune n'a fonctionné. Avez vous une solution simple à me proposer ?

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 avril 2006 à 13:22
Salut
Je n'ai pas tout détaillé, mais .FileName te renverra le ou les fichiers sélectionnés.
Il ne sert pas à définir le type de fichiers à afficher.
Il faut utiliser .Filter avec la syntaxe   .Filter = "*.XML, *.TXT|*.XML, *.TXT"
La 1ere partie sera affiché à l'utilisateur (texte libre), la 2nde est le filtre lui-même (syntaxe DOS)
Il faut regarder aussi du côté de l'attribut  .Flag  qui te permettra de définir (par exemple) si l'utilisateur peut choisir plusieurs fichiers ou un seul ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on le partage. (Socrate)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
26 avril 2006 à 13:25
Peut-être avec ceci ... "*.xml,*.txt"
0
nenette_cherie Messages postés 17 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 28 avril 2006
26 avril 2006 à 13:44
Crenaud76 : j'ai aussi essayé cette façon tout à l'heure (juste après mon post) mais ça ne fonctionne pas non plus.

Jack : J'ai remplacé le .FileName par .Filter = "*.XML, *.TXT|*.XML, *.TXT"
et du coup, il me rend "file found : 0". Ensuite, j'ai testé en mettant le FileName à *.* suivit du .Filter : il me liste bien des fichiers, mais tous ceux du dossier (y compris les non txt et non xml).

comme je suis débutante, j'ai surement manqué quelque chose dans ton explication. Ici, je demande d'indiquer à l'utilisateur un dossier sans afficher son contenu (utilisation du objShell.BrowseForFolder pour récupérer le chemin du dossier uniquement). Ensuite, ma fonction ci-dessus me renvoie les fichiers contenus dans ce dossier. J'utilise bien la fonction filter ailleurs dans mon code mais uniquement lors que j'affiche une boite de dialogue de type "FileOpenSave". Ici, je ne voulais pas obliger l'utilisateur a sélectionner tous les fichiers "à la main" mais plutot qu'il choississe un dossier et je fais le listing (qu'il peut ensuite modifier/controler si besoin car j'affiche le listing dans le formulaire).
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
26 avril 2006 à 21:25
En VB, sur les listes de fichiers, on utilise .pattern . Tu peux toujours essayer.

Que les pros de VBA m'excusent si je dis une grosse co***rie, mes connaissances sont très limitées

Jer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nenette_cherie Messages postés 17 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 28 avril 2006
28 avril 2006 à 09:11
Re-bonjour !
apparemment, le '.pattern' n'est pas reconnu avec 'Application.FileSearch'. Par contre, je suis aussi une débutante, et donc je ne m'y connais pas vraiment assez pour savoir bien l'utiliser. Le '.pattern' n'est pas utiliser plutôt avec les expressions régulières (reg.Pattern)? dans mon cas, je ne vois pas trop où le placer....
A l'heure actuelle, les .xml me suffisent mais je pourrais peut-être avoir besoin de savoir faire ce genre de filtrage par la suite. Je vais continuer à chercher mais n'hésitez pas si vous avez une méthode simple. Merci à tous !
0
Rejoignez-nous