Recherche d'une chaîne dans fichier de chaque dossier

cs_rufian Messages postés 9 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 19 août 2006 - 30 déc. 2005 à 17:43
cs_rufian Messages postés 9 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 19 août 2006 - 31 déc. 2005 à 15:09
bonsoir,
je recherche à aficher dans une liste les fichiers contenant ma recherche
pour comprenure:
txtRecherche.txt = test
ce code devrait ouvrir chaque dossiers, dans chacun de ceux-ci vérifier s'il existe dans chaque fichier la valeur de recherche (TEST) si oui l'ajouter à la liste
Tous les dossiers ne contiennent pas de sous-dossiers

bien évidemment ca marche pas, un petit conseil bienvenu
merci d'avance
Pascal
===================================
Private Sub RechercherFichiers()
Dim FSO As New FileSystemObject
Dim Dossier As Folder
Dim Fichier As File
Set Dossier = FSO.GetFolder(Me.Dir1.Path)
With Me.ListView1
.ListItems.Clear

For i = 0 To Me.Dir1.ListCount - 1
s = Mid(Me.Dir1.List(i), InStrRev(Me.Dir1.List(i), "") + 1)
.ListItems.Add , , s, 1
For Each Fichier In Dossier.Files
If UCase$(right$(Fichier, Len(Fichier))) = UCase$(txtRecherche.Text) Then Liste.AddItem Fichier
Next Fichier
Next i
End With
Set Dossier = Nothing
End Sub

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
31 déc. 2005 à 14:47
Salut

Voila un code qui fonctionne

Private Sub RechercherFichiers()
Dim FSO As New FileSystemObject
Dim Dossier As Folder
Dim Fichier As File
Dim files As files
Dim s As String
Set Dossier = FSO.GetFolder(Me.Dir1.Path)
Set files = Dossier.files
For Each Fichier In files
Dim r As New RegExp
r.Pattern = txtRecherche.Text
r.IgnoreCase = True
s = Fichier.Name
If r.Test(s) Then
Liste.AddItem Fichier
End If
Next
Set Dossier = Nothing
End Sub

il faut que tu ajoutes la réference à microsoft vbscript regular expression
pour les regexp

Bonne programmation
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
31 déc. 2005 à 14:52
Pour faire chaque dossiers il faut utiliser une fonction recursive.
Je te laisse le soin de la faire ;-)
0
cs_rufian Messages postés 9 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 19 août 2006
31 déc. 2005 à 15:09
salut nhervagault,
entre-temps voici ce que j'ai fait je le poste pour en faire profiter tous le monde
merci de m'avoir répondu
meilleurs voeux
rufian

=========================================================
Private Function ChercheFichiers(ByVal repertoire As String, _
ByVal pattern As String, _
ByRef tResult() As String, _
ByRef nbResult As Long) As Boolean
Dim fichier As String

fichier = Dir$(repertoire & "\*.*")
While fichier <> ""
If InStr(1, fichier, pattern, vbTextCompare) <> 0 Then
nbResult = nbResult + 1
ReDim Preserve tResult(nbResult)
tResult(nbResult) = fichier
End If
fichier = Dir$
Wend
ChercheFichiers = True
End Function


Private Sub Command1_Click()
Dim r As Boolean
Dim repertoire As String
Dim pattern As String
Dim tabloResults() As String
Dim nbResults As Long
Dim i As Long

repertoire = "c:\Essai"
pattern = "test"

r = ChercheFichiers(repertoire, pattern, tabloResults, nbResults)
If r Then
For i = 1 To nbResults
Debug.Print tabloResults(i)
Next i
End If
End Sub
0
Rejoignez-nous