Comment utiliser "FileName" avec plusieurs choix ?
nenette_cherie
Messages postés17Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention28 avril 2006
-
26 avril 2006 à 13:05
nenette_cherie
Messages postés17Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention28 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 ?
A voir également:
Comment utiliser "FileName" avec plusieurs choix ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
nenette_cherie
Messages postés17Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention28 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).
nenette_cherie
Messages postés17Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention28 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 !