Utilisateur anonyme
-
14 nov. 2007 à 17:25
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
17 nov. 2007 à 22:47
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 |
-----------------------------------
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 15 nov. 2007 à 23:55
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
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 15 nov. 2007 à 11:29
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.
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 |
-----------------------------------
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 16 nov. 2007 à 12:49
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...
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 17 nov. 2007 à 00:42
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.