OVH Cloud OVH Cloud

Filesearch

2 réponses
Avatar
marcel
J'ai un hic que je cerne mais que je n'arrive pas à résoudre
avec l'option filesearch

(chemin_disque est une petite fonction pour me retourne le répertoire
courant et qui ne pose
pas de problème)

---------------------------------------------------------------------------------
je trouve correctement les fichiers quand je les cherche de la manière
suivante
*.* -> ok
*.jpg -> ok


Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "*.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with



--------------------------------------------------------------------------------------
Dès que j'essaie d'être plus précis qu'avec un joker type *
exemple :

*A.jpg -> KO
Nomfichier.jpg -> KO

alors que les fichiers existent bien
(d'où mes tests avec *.* *.jpg )
----------------------------------------------------------------------------------------
Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "379b.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with

Quelqu'un aurait il connaissance d'un bug
ou l'option filesearch ne permet elle pas la recherche d'un seul fichier ?

Merci d'avance

Marcel

2 réponses

Avatar
Bonjour,
chez moi ta routine fonctionne correctement .......

Essaye la fonction ci-dessous pour voir :

Sub ListFiles(Optional strFileName, Optional strPath, Optional SearchInSubFolders)
Dim i As Integer
Dim NomFichier As String
Dim NomDossier As String


With Application.FileSearch

If IsMissing(strPath) Then: strPath = CurDir
If IsMissing(SearchInSubFolders) Then: SearchInSubFolders = False
If IsMissing(strFileName) Then: strFileName = "*.*"

.LookIn = strPath
.SearchSubFolders = SearchInSubFolders
.FileName = strFileName
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
'NomFichier = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "", -1, vbTextCompare))
NomFichier = Right(.FoundFiles(i), InStr(1, StrReverse(.FoundFiles(i)), "", vbTextCompare) - 1)
NomDossier = Left(.FoundFiles(i), Len(.FoundFiles(i)) - Len(NomFichier))
Debug.Print NomDossier & NomFichier
Next i
End If
End With
End Sub

Sub fd()
Call ListFiles("21.jpg", "E:Mes Documents", False)
End Sub


attention : apparemment, la fonction retourne tous les fichiers *21.jpg même si on ne met pas le joker *


--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------





"marcel" a écrit dans le message de news: dts1fb$c3q$
J'ai un hic que je cerne mais que je n'arrive pas à résoudre
avec l'option filesearch

(chemin_disque est une petite fonction pour me retourne le répertoire courant et qui ne pose
pas de problème)

---------------------------------------------------------------------------------
je trouve correctement les fichiers quand je les cherche de la manière suivante
*.* -> ok
*.jpg -> ok


Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "*.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with



--------------------------------------------------------------------------------------
Dès que j'essaie d'être plus précis qu'avec un joker type *
exemple :

*A.jpg -> KO
Nomfichier.jpg -> KO

alors que les fichiers existent bien
(d'où mes tests avec *.* *.jpg )
----------------------------------------------------------------------------------------
Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "379b.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with

Quelqu'un aurait il connaissance d'un bug
ou l'option filesearch ne permet elle pas la recherche d'un seul fichier ?

Merci d'avance

Marcel







Avatar
marcel
Merci, je vais voir cela, où l'un de ces patchs de sécurité m'aurait modifié
mes librairies que je n'en serai pas surpris
Bon weekend
<Anor> a écrit dans le message de news:
44019605$0$15495$
Bonjour,
chez moi ta routine fonctionne correctement .......

Essaye la fonction ci-dessous pour voir :

Sub ListFiles(Optional strFileName, Optional strPath, Optional
SearchInSubFolders)
Dim i As Integer
Dim NomFichier As String
Dim NomDossier As String


With Application.FileSearch

If IsMissing(strPath) Then: strPath = CurDir
If IsMissing(SearchInSubFolders) Then: SearchInSubFolders = False
If IsMissing(strFileName) Then: strFileName = "*.*"

.LookIn = strPath
.SearchSubFolders = SearchInSubFolders
.FileName = strFileName
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
'NomFichier = Right(.FoundFiles(i), Len(.FoundFiles(i)) -
InStrRev(.FoundFiles(i), "", -1, vbTextCompare))
NomFichier = Right(.FoundFiles(i), InStr(1, StrReverse(.FoundFiles(i)),
"", vbTextCompare) - 1)
NomDossier = Left(.FoundFiles(i), Len(.FoundFiles(i)) - Len(NomFichier))
Debug.Print NomDossier & NomFichier
Next i
End If
End With
End Sub

Sub fd()
Call ListFiles("21.jpg", "E:Mes Documents", False)
End Sub


attention : apparemment, la fonction retourne tous les fichiers *21.jpg
même si on ne met pas le joker *


--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------





"marcel" a écrit dans le message de news:
dts1fb$c3q$
J'ai un hic que je cerne mais que je n'arrive pas à résoudre
avec l'option filesearch

(chemin_disque est une petite fonction pour me retourne le répertoire
courant et qui ne pose
pas de problème)

---------------------------------------------------------------------------------
je trouve correctement les fichiers quand je les cherche de la manière
suivante
*.* -> ok
*.jpg -> ok


Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "*.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with



--------------------------------------------------------------------------------------
Dès que j'essaie d'être plus précis qu'avec un joker type *
exemple :

*A.jpg -> KO
Nomfichier.jpg -> KO

alors que les fichiers existent bien
(d'où mes tests avec *.* *.jpg )
----------------------------------------------------------------------------------------
Set Fs = Application.FileSearch
With Fs
.NewSearch
.LookIn = Chemin_Disque
.FileName = "379b.jpg"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Debug.Print .FoundFiles(i)
Next i

Else
MsgBox "There were no files found."
End If

end with

Quelqu'un aurait il connaissance d'un bug
ou l'option filesearch ne permet elle pas la recherche d'un seul fichier
?

Merci d'avance

Marcel