Problème avec FileSearch / comportement différent des examples de l'aide
1 réponse
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 ?
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 ?