Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : recherche de fichiers en vba [ Langages dérivés / VBA ] (isis1be)

mercredi 3 octobre 2007 à 17:21:15 | recherche de fichiers en vba

isis1be

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

[code]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 [/code]

Voila si quelqu'un peut me donner un coup de main
Voila un grand merci et surtout bon surf à tous



mercredi 3 octobre 2007 à 17:59:00 | Re : recherche de fichiers en vba

mrdep1978

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 :

ListBoxResult.AddItem .FoundFiles(compteur)

mercredi 3 octobre 2007 à 18:52:34 | Re : recherche de fichiers en vba

isis1be

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?

Merci à toi pour ton aide et @ bientôt.

mercredi 3 octobre 2007 à 22:50:30 | Re : recherche de fichiers en vba

mrdep1978

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



jeudi 4 octobre 2007 à 09:16:08 | Re : recherche de fichiers en vba

isis1be

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?

Je te remercie encore pour ton aide
@ bientôt

jeudi 4 octobre 2007 à 23:40:23 | Re : recherche de fichiers en vba

MPi

En passant rapidement ce qui a été dit, j'imagine que tu y arriverais avec

.Filename = NomClient & "*.xls"

MPi²

vendredi 5 octobre 2007 à 12:59:13 | Re : recherche de fichiers en vba

isis1be

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

vendredi 5 octobre 2007 à 23:35:26 | Re : recherche de fichiers en vba

MPi

Essaie comme ceci.
J'ai mis un contrôle Textbox, un Listbox et un bouton sur un Userform avec leurs noms par défaut.

Tu n'as qu'à écrire dans le textbox la partie du nom de fichier que tu recherches.

Private Sub CommandButton1_Click()
    Dim Fichier As String
   
    ListBox1.Clear
    Fichier = Dir("D:\Documents Provigo\WMS\")
   
    Do While Fichier <> ""
        If UCase(Fichier) Like "*" & UCase(TextBox1.Text) & "*" Then
            ListBox1.AddItem Fichier
        End If
        Fichier = Dir
    Loop
   
End Sub

MPi²

mercredi 10 octobre 2007 à 14:49:51 | Re : recherche de fichiers en vba

isis1be

Désolé pour se retard mais j'ai été fort occupé.
Je te remercie de ton aide mais comment je l'intègre au code précédent?
encore merci


mercredi 10 octobre 2007 à 23:19:10 | Re : recherche de fichiers en vba

MPi

Réponse acceptée !
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
  
End Sub

MPi²


1 2

Cette discussion est classé dans : code, recherche, nomclient, listboxresult, cherchefichier


Répondre à ce message

Sujets en rapport avec ce message

je recherche code pour replacer les controles en fonction de la taille du formulaire [ par vincent ] je souhaite que mes controles se replace dans le form comme il faut pour etre visible si je modifie la taille de mon formulaire avec la souris il faut Pbs : LIKE fait n'importe quoi [ par WolfKiller ] SalutJe recherche dans une grosse table un code en particulier.Il est unique.Ils ressemble a ça : 01545,35481,458621AF etc..J'ai une premiere form de Recherche sur ADO [ par jcharles ] J'aimerai effectuer une recherche approximative sur un ADO.J'ai utilisé les % mais cela ne change rien. (voir mon code)Pour qu'il trouve un enregistre Recherche sur DataGrid!!! Pb de Code [ par pepeveve ] Salut à TousJ'aurai besoin de votre aide:J'utilise une ADODC une DATABASE un COMBOBOX et un TIMER.je souhaite creer une recherche de Nom dans ma datab Recherche MSCOMCT2.OCX [ par PapyJo ] PapyJoSalut à tous.Je recherche l'OCX MsComCt2.ocx.Je programme avec Visua recherche code pour impression [ par SAYSAY03 ] Je souhaite faire une impression de donnees excel Mon script ouvre excel , va chercher les données et les insert dans un tableauMon probleme est la pa recherche deux code soure [ par bkackhawk ] ¶Bonjour,¶je voudrais savoir si il y a deja code source pour faire ceci:¶1*¶ code source pour cree un compresseur comme winrar mais sous une extensio recherche code gestion contact [ par sylvainade ] Sylvain DENIS Bonjour,je suis à la recherche d'un code pour gérer mes adresses d'entreprises qui me permetrait en meme temps quand je clique sur une Pb De recherche dans un RTB [ par dionysos6868 ] Bonjour J'ai Un formulaire et je veux faire une recherche dans un RTBJe me suis servie de ce code Dim FoundPos As Integer Dim FoundLine As Integ Recherche code [ par Doumai60 ] Je voudrai qu'avec l'aide d'un InputBox, une fois avoir tapé un nom puis cliqué sur ok que le nom recherché se valide dans la colonne de ma base de do


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.