Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec FileSearch / comportement différent des examples de l'aide

1 réponse
Avatar
Denis / SAD-Marketing
Bonjour,

Je souhaite faire un petit classeur permettant de mettre une liste de
répertoire et une liste de nom de fichier.
Puis en cliquant sur un bouton , que la liste des fichiers dont le nom
correspond a la liste contenu dans les répertoires et sous répertoires
indiqués soit affiché sur la feuille.

J'utilise donc Application.FileSearch en boucle pour trouver les
fichiers voulu.
Cela fonctionne bien, sauf pour si le nom de fichier correspond à
quelquechose du type "xxxx*.xls". En effet dans ce cas, la recherche se
fait comme si il était indiqué "*xxx*.xls" (ajout de * au début)

J'ai donc fait un test sur une macro plus simple.
Soit un répertoire c:\test\ contenant 4 fichiers.
qdqsdqsTESTsqdqs.xls
TESTqsfqsfqs.xls
TESTzerzer.txt
qdqsdTESTdaqzea.txt

et la macro suivante
------
Sub Test()
Dim numligne As Long
Dim cpttrv As Long
numligne = 1
With Application.FileSearch
.NewSearch
.LookIn = "C:\test\"
.Filename = "TEST*.xls"
.MatchAllWordForms = False
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True

If .Execute() > 0 Then
For cpttrv = 1 To .FoundFiles.Count
fResult.Range("A" & numligne).Value =
.FoundFiles(cpttrv)
numligne = numligne + 1
Next cpttrv
End If
End With
End Sub
------
Dans ce cas ma liste de fichier donne
qdqsdqsTESTsqdqs.xls
TESTqsfqsfqs.xls

si je remplace "TEST*.xls" par "TEST*"
J'obtient bien
TESTqsfqsfqs.xls
TESTzerzer.txt

J'ai aussi testé avec TEST*xls , dans ce cas, j'ai le mème problème que
précédemment.

Je sais que je pourrais utiliser le filetype, mais je pourrais avoir
besoin d'info supp sur le nom de fichier (par exemple TEST*2006* type
DOC ou XLS ...)

Pour information si je met .MatchAllWordForms = True, j'ai les 4
fichiers en résultat.

Je suis sous Excel 2003/ windows XPSP2.
Est ce que je fais une erreur ?
Est ce que j'oubli quelquechose ?

Merci à tous

1 réponse

Avatar
FxM
Bonsoir,

Sans avoir essayé, n'y a-t-il pas une pointe d'incompatibilité à
préciser à la fois :
.Filename = "TEST*.xls"
-> donc fichier Excel seul
et
.FileType = msoFileTypeAllFiles
-> toutes les extensions ?

Essaie en restreignant les conditions :
.LookIn = "C:test"
.Filename = "TEST*.xls"
.SearchSubFolders = True
If .Execute() > 0 Then


@+
FxM

Bonjour,

Je souhaite faire un petit classeur permettant de mettre une liste de
répertoire et une liste de nom de fichier.
Puis en cliquant sur un bouton , que la liste des fichiers dont le nom
correspond a la liste contenu dans les répertoires et sous répertoires
indiqués soit affiché sur la feuille.

J'utilise donc Application.FileSearch en boucle pour trouver les
fichiers voulu.
Cela fonctionne bien, sauf pour si le nom de fichier correspond à
quelquechose du type "xxxx*.xls". En effet dans ce cas, la recherche se
fait comme si il était indiqué "*xxx*.xls" (ajout de * au début)

J'ai donc fait un test sur une macro plus simple.
Soit un répertoire c:test contenant 4 fichiers.
qdqsdqsTESTsqdqs.xls
TESTqsfqsfqs.xls
TESTzerzer.txt
qdqsdTESTdaqzea.txt

et la macro suivante
------
Sub Test()
Dim numligne As Long
Dim cpttrv As Long
numligne = 1
With Application.FileSearch
.NewSearch
.LookIn = "C:test"
.Filename = "TEST*.xls"
.MatchAllWordForms = False
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True

If .Execute() > 0 Then
For cpttrv = 1 To .FoundFiles.Count
fResult.Range("A" & numligne).Value =
..FoundFiles(cpttrv)
numligne = numligne + 1
Next cpttrv
End If
End With
End Sub
------
Dans ce cas ma liste de fichier donne
qdqsdqsTESTsqdqs.xls
TESTqsfqsfqs.xls

si je remplace "TEST*.xls" par "TEST*"
J'obtient bien
TESTqsfqsfqs.xls
TESTzerzer.txt

J'ai aussi testé avec TEST*xls , dans ce cas, j'ai le mème problème que
précédemment.

Je sais que je pourrais utiliser le filetype, mais je pourrais avoir
besoin d'info supp sur le nom de fichier (par exemple TEST*2006* type
DOC ou XLS ...)

Pour information si je met .MatchAllWordForms = True, j'ai les 4
fichiers en résultat.

Je suis sous Excel 2003/ windows XPSP2.
Est ce que je fais une erreur ?
Est ce que j'oubli quelquechose ?

Merci à tous