Recherche d'un dossier [Résolu]

Signaler
Messages postés
141
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
17 mai 2014
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
Bonjour, j'aurai voulu avoir un petit morceau de code qui me permettré de lancer une recherche sur l'ordinateur (juste en cliquant sur un boutton ou au démarrage de la form) pour trouver un fichier qui comporte le nom: Test81 (par exemple) et que si il le trouve il fait telle action et si il ne le trouve pas il fait une autre action... Je n'est pas trouvé de quoi m'aider dans les sources et je vois pas comment faire...

Merci

-----------------------------------
|     Longue vie à Vbfrance! :D     |
-----------------------------------

9 réponses

Messages postés
69
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
14 décembre 2007

Je ne doute pas qu'on trouve l'équivalent sur codyx, beaucoup de choses ont été faites et refaites maintes fois. En revanche, c'est une composition perso, pas une tentative de pillage intellectuel.

Pour revenir au code, tant mieux si ça répond à ton problème culie3.
La modification était bénigne, je te remets le code modifié : cette fois ça devrait le faire :




Sub lanc_proc2()
Dim temps_exec As Single
Dim repertoire_trouve As Boolean

    temps_exec = Timer
    Call balaie_rep("C:", "Test81", repertoire_trouve)
    If repertoire_trouve = True Then
        'faire ceci
    Else
        'faire cela
    End If
    temps_exec = Timer - temps_exec
    'MsgBox temps_exec
End Sub

Sub balaie_rep(chemin As String, rech_nom As String, rep_tr_ret As Boolean)
Dim fs          'filesystemobject
Dim fr          'répertoire recherché sur le réseau
Dim fr_c        'collection des sous-répertoires du répertoire
Dim fr_1        '1 sous-réperoire de cette collection
Dim ff_c        'collection des fichiers du répertoire
Dim ff_1        '1 fichier de cette collection
Dim rep_tr_ent As Boolean

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fr = fs.GetFolder(chemin)
    Set fr_c = fr.subfolders
    Set ff_c = fr.Files
  
    For Each fr_1 In fr_c
        If InStr(1, fr_1.Name, rech_nom) <> 0 Then
            rep_tr_ret = True
            Exit Sub
        ElseIf fr_1.Name <> "System Volume Information" Then
            Call balaie_rep(fr_1.Path, rech_nom, rep_tr_ent)
            If rep_tr_ent = True Then
                rep_tr_ret = rep_tr_ent
                Exit Sub
            End If
        End If
    Next
End Sub








La haine aveugle n'est pas sourde
Messages postés
69
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
14 décembre 2007

Bon, ce n'est pas exactement ce que tu attends mais ça peut peut-être résoudre ton pb. Et comme je l'avais dans les cartons...

Voilà le code :

Sub lanc_proc2()
Dim temps_exec As Single
Dim fichier_trouve As Boolean

    temps_exec = Timer
    Call balaie_rep("C:", "Test81", fichier_trouve)
    If fichier_trouve = True Then
        'faire ceci
    Else
        'faire cela
    End If
    temps_exec = Timer - temps_exec
    'MsgBox temps_exec
End Sub

Sub balaie_rep(chemin As String, rech_nom As String, fich_tr_ret As Boolean)
Dim fs          'filesystemobject
Dim fr          'répertoire recherché sur le réseau
Dim fr_c        'collection des sous-répertoires du répertoire
Dim fr_1        '1 sous-réperoire de cette collection
Dim ff_c        'collection des fichiers du répertoire
Dim ff_1        '1 fichier de cette collection
Dim typ_fich As String
Dim nom_fich_adresse As String, nom_fich_nom As String
Dim fich_tr_ent As Boolean

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fr = fs.GetFolder(chemin)
    Set fr_c = fr.subfolders
    Set ff_c = fr.Files
   
    For Each ff_1 In ff_c
        If InStr(1, ff_1.Name, rech_nom) <> 0 Then
            fich_tr_ret = True
            Exit Sub
        End If
    Next
   
    If fich_tr = False Then
        For Each fr_1 In fr_c
            If fr_1.Name <> "System Volume Information" Then
                Call balaie_rep(fr_1.Path, rech_nom, fich_tr_ent)
                If fich_tr_ent = True Then
                    fich_tr_ret = fich_tr_ent
                    Exit Sub
                End If
            End If
        Next
    End If
End Sub

En fait, dans ce cas, la recherche s'effectue uniquement sur C:. A toi de rajouter les autres partitions.

La haine aveugle n'est pas sourde
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
euh... même sur codyx...

Amicalement,
Us.
Messages postés
141
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
17 mai 2014

ok merci caco64 jvais voir ça! puis codyx n'a pas sue m'aider...

-----------------------------------
|     Longue vie à Vbfrance! :D     |
-----------------------------------
Messages postés
141
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
17 mai 2014

wow c'est exactement ce que je voulais ^^ mais je me suis tromper sur un petit point, c'est pas un fichier que je dois trouver mais un dossier :s ça change beaucoup le code? Qu'est-ce que je dois modifier pour le prendre en compte?

Merci

-----------------------------------
|     Longue vie à Vbfrance! :D     |
-----------------------------------
Messages postés
141
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
17 mai 2014

Parfait! Merci beaucoup pour ton aide!

-----------------------------------
|     Longue vie à Vbfrance! :D     |
-----------------------------------
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Salut Caco64,


"...pillage intellectuel...", désolé mais le but même d'un site de programmation (comme vbf) ont pour vocation de se faire "piller", sinon je ne vois pas l'intérêt de mettre du code en libre service... Maintenant, après recherche sur Codyx.org, le problème posé ici (recherche d'un dossier) n'est pas été traité (sauf erreur)... donc c'est une bonne occassion pour proposer le tient... je te laisse juge, bien sur...

Amicalement,
Us.
Messages postés
69
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
14 décembre 2007

Salut us_30, je viens de me rendre compte que j'avais mal compris ton message... Je croyais que tu disais qu'il y avait la "même [chose] sur codyx". Et ma réponse voulait juste signifier que je n'étais pas sur ce forum pour essayer de m'approprier les codes des autres ; même si je ne vois aucun inconvénient à le faire puisque, comme tu le signales, ces sites permettent d'éviter de réinventer la poudre à chaque nouveau programme. Et c'est bien pour ça que j'y viens.

J'étais totalement à côté de la plaque, désolé.

Pour ce qui est de mettre ces quelques lignes sur codyx, aucun problème. C'est juste que je traîne exclusivement (depuis pas très longtemps d'ailleurs) sur VB France. Faudra que j'en visite d'autres un de ces 4.
C'est peut-être l'occasion.

La haine aveugle n'est pas sourde
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Y'a pas mal, ne soit pas trop désolé... Pour ton info "codyx" fait partie en quelque sorte de VBF... 

A+, bonne prog...

Amicalement,
Us.