isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008
-
3 oct. 2007 à 17:21
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008
-
11 oct. 2007 à 14:47
Salut à tous
J'ai trouvé un code qui permet de rechercher des fichier que je modifie car je doit faire la recherche à partir d'une donnée insérer dans ma userform par l'utilisateur et il faut afficher le résultat dans une ListBoxResult, voila mais il me dit qu'il y a une erreur à la ligne AddItem il me dit "fonction ou variable attendue" mais je sais pas ce que cela veut dire
Private Sub btnchercher_Click()
Dim ChercheFichier As FileSearch, compteur As Long
Set ChercheFichier = Application.FileSearch
Dim NomClient As String
NomClient = ZoneRech.Value
With ChercheFichier
.LookIn = "C:\Documents and Settings\vincent\Bureau"
.Filename = NomClient & "*"
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = True
.Execute
For compteur = 1 To .FoundFiles.Count
ListBoxResult.AddItem.FoundFiles
Next
End With
ListBoxResult.ListIndex = 0
End Sub
Voila si quelqu'un peut me donner un coup de main
Voila un grand merci et surtout bon surf à tous
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 oct. 2007 à 23:19
J'ai mis un .xls en bleu si tu veux rechercher des fichiers xls seulement.
Si tu veux afficher tous les fichiers, enlève cette partie et laisse seulement l'astérisque.
En fait, mets ou enlève les astérisques selon le besoin.
Private Sub CommandButton1_Click()
Dim Fichier As String
ListBoxResult..Clear 'on vide en premier
'recherche dans le répertoire qu'on veut
Fichier = Dir(" C:\Documents and Settings\vincent\Bureau\ ")
Do While Fichier <> ""
'UCase pour s'assurer d'une bonne comparaison entre les chaînes
If UCase(Fichier) Like "*" & UCase(ZoneRech.Value) & "*.XLS" Then
ListBoxResult.AddItem Fichier
End If
Fichier = Dir ' Recherche suivante
Loop
'On spécifie l'Index à afficher seulement si la liste n'est pas vide
If ListBoxResult.ListCount > 0 then ListBoxResult.ListIndex = 0
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 3 oct. 2007 à 17:59
Salut,
Il y a 2 erreurs sur ta ligne de code :
- FoundFiles renvoie une collection (équivalent en gros à un tableau), il faut donc prendre un seul élément du tableau à la fois :
- tu as oublié l'espace entre .Additem et .FoundFiles :
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008 3 oct. 2007 à 18:52
Ok , mais maintenant quand je met un critère de recherche dans mon textbox "ZoneRech" il me donne une erreur à la dernière ligne
ListBoxResult.AddItem .FoundFiles(compteur)
Next
End With
ListBoxResult.ListIndex = 0
End Sub
et quand je ne m'est rien dans mon textbox il m'affiche bien le chemin complet des fichiers, mais comment faire pour n'afficher que les nom des dossiers?
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 3 oct. 2007 à 22:50
Si ta listbox est vide, tu ne peux pas forcer le listindex à 0
> if ListBoxResult.ListCount > 0 then ListBoxResult.ListIndex = 0
Pour le reste, j'ai fait ça :
Private Sub btnchercher_Click()
Dim ChercheFichier As FileSearch, compteur As Long
Dim ls_Folder As String
Dim ll_Pos As Long
Dim NomClient As String
NomClient = ZoneRech.Value
Set ChercheFichier = Application.FileSearch
ListBoxResult.Clear
With ChercheFichier
.LookIn = "C:\Documents and Settings\vincent\Bureau"
.Filename = NomClient & "*"
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = True
.Execute msoSortByFileName, msoSortOrderAscending
For compteur = 1 To .FoundFiles.Count
'Récupère le nom du fichier
ls_Folder = .FoundFiles(compteur)
'Détermine la position du dernier "" dans le nom complet du fichier
ll_Pos = InStrRev(ls_Folder, "")
If ll_Pos > 0 Then
'Si il y a un "", on extrait tt ce qui est situé avant (= répertoire)
ls_Folder = Left(ls_Folder, ll_Pos - 1)
End If
'Teste si le répertoire a déjà été ajouté à la liste
If Not lfctFolderExists(ls_Folder) Then
'Si pas encore ajouté, on l'ajoute
ListBoxResult.AddItem ls_Folder
End If
Next
End With
'Si il y a des éléments dans la liste, on sélectionne le 1e élément.
If ListBoxResult.ListCount > 0 Then
ListBoxResult.ListIndex = 0
End If
End Sub
Private Function lfctFolderExists(aFolder As String) As Boolean
Dim li_Index As Integer
'Parcourt les éléments de la liste
For li_Index = 0 To ListBoxResult.ListCount - 1
'Si un des éléments porte le nom passé en paramètre, on sort en indiquant que l'élément est déjà présent
If ListBoxResult.List(li_Index) = aFolder Then
lfctFolderExists = True
Exit Function
End If
Next li_Index
End Function
L'inconvénient, c'est que ce n'est pas super optimisé comme méthode : si tu as 2 répertoires, mais qu'ils contiennent chacun 5000 fichiers; ca va tourner qqes minutes pour sortir 2 malheureuses lignes dans ta listbox.
Je dois avoir dans un coin un bout de programme qui fait du parcours de répertoires récursifs, sans passer par les fonctions d'Excel. Je vais essayer de le retrouver demain
Vous n’avez pas trouvé la réponse que vous recherchez ?
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008 4 oct. 2007 à 09:16
Ca marche mais il me trouve tous les fichiers contenant le nom renseigné en paramètre, alors qu'il ne faudrais que les fichier excel, et quand je ne mets rien en paramètres de renseignement il me trouve tous les fichiers qui sont situé sur le bureau, donc ca me fait une tartine invraissemblable de fichier, comment faire pour restreindre cette recherche au simple fichier excel? et pour n'afficher que le nom du fichier sans son chemin d'accès et est-ce possible?
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008 5 oct. 2007 à 12:59
Oui ca marche, c'est déja ca
Mais Je voudrais affiné le code pour qu'il m'affiche seulement le nom du fichier qu'il aurais trouvé, car ici j'ai deux fichier sur mon bureau mais il ne me montre que le chemin d'accès
C:\Documents and Settings\vincent\Bureau
Donc je voudrais voir, apparaitre les deux fichier existant sur mon bureau.
Merci pour votre aide @ bientôt