Code de recherche de fichier en VB6

Résolu
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011 - 22 mars 2006 à 11:02
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011 - 22 mars 2006 à 15:35
Bonjour,

Je souhaiterais savoir si vous pourriez m'aider pour la creation d'un code assez simple en VB6 :

Je possede un grand nombre de fichiers et je souhaiterais qu'ils s'ouvre rapidement.
Je souhaite créer un exe qui ouvrirais une boite de dialogue ou je rentrerais un nom du fichier (sans extension) et qui, après validation me proposerais une liste des nom "avoisinant" l'orthographe.

exemple de fichier :

PS41020.doc
PS41020-R01.doc
PS41020-R02.doc

si je rentre "PS41020", je voudrais que le programme me propose les 3 fichiers et que je puisse selectionner celui que je veux et l'ouvrir.

Si aucun fichier ne correspond à la recherche, le programme renverra un message d'erreur.

nota : ces fichiers sont classé dans un meme repertoire avec des sous-repertoires pour les pré-classer
certains fichiers sont en extension .pdf ou .xls....je souhaiterais avoir tous les fichiers quelque soit leur extension.

Comme je débute je suis perdu :(

Merci de votre aide

Fabrice

17 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 14:56
Re,

BEn ensuite il te faudras inclure les objets qui vont bien pour lire tout les fichier (.doc, pst, ....)

Amuses toi bien .....

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 11:16
Salut,

Ton probleme est bien exposé, mais tu coinces ou exactement?

- Sais tu parcourir les repertoires pour lister les fichiers (=> Moteur de recherche)
- Sais tu Savoir si une chaine de caractere contient en contient une specifiee (=> Moteur de recherche ou Instr())

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 11:19
merci pour la reponse...

en fait je debute et je patauge completement !
j'ai plus l'habitude de faire du VB avec Excel

A mon avis le code doit etre assez simple a réaliser mais je ne sais pas du tout par ou commencer.... :'(
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 11:38
Salut,


Dans un projet VB6 ajoute la reference Microsoft Scripting Runtime (Menu Projet References)


Ajoute


- une listbox que tu appelles Li
- Un Bouton que tu appelles cmdRechercher
- Un TextBox que tu appelles txtFichier


Et le code si dessous: (teste et regardes si ca te convient, sachant qu il faudra surement l'adapter a tes besoins)

Private Sub CmdRechercher_Click()
Call Li.Clear
Call RechercheFichier("C:\Test", TxtFichier)
End Sub


Private Sub RechercheFichier(StrRep As String, StrFichier As String)


Dim Fs As New FileSystemObject
Dim Fo As Folder
Dim Fi As File
Dim SubFo As Folder


Set Fo = Fs.GetFolder(StrRep)


For Each Fi In Fo.Files
If InStr(1, Fi.Name, StrFichier) Then Call Li.AddItem(Fi.Name)
Next


For Each SubFo In Fo.SubFolders
Call RechercheFichier(SubFo.Path, StrFichier)
Next


Set Fs = Nothing
Set Fi = Nothing
Set Fo = Nothing
Set SubFo = Nothing
End Sub



@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 12:05
merci !

je viens de rentrer ce code :

Private Sub CmdRechercher_Click()
Call Li.Clear
Call RechercheFichier("U:\APRES-VENTE\Technique\Programmes PI PS", txtFichier)
End Sub

Private Sub RechercheFichier(StrRep As String, StrFichier As String)

Dim Fs As New FileSystemObject
Dim Fo As Folder
Dim Fi As File
Dim SubFo As Folder

Set Fo = Fs.GetFolder(StrRep)

For Each Fi In Fo.Files
If InStr(1, Fi.Name, StrFichier) Then Call Li.AddItem(Fi.Name)
Next

For Each SubFo In Fo.SubFolders
Call RechercheFichier(SubFo.Path, StrFichier)
Next

Set Fs = Nothing
Set Fi = Nothing
Set Fo = Nothing
Set SubFo = Nothing
End Sub


Ca fonctionne effectivement : mais c'est très long a afficher : peut on mettre une barre de progression par exemple ?

Merci
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 12:15
Salut,

Ajoute la bibliotheque de composant suivante:
Microsoft Windows Common Controls X.X

Rajoute dans ta feuille un label appelle traite et une progress bar appelle pb ensuite modife le coe:

Private Sub RechercheFichier(StrRep As String, StrFichier As String)


Dim Fs As New FileSystemObject
Dim Fo As Folder
Dim Fi As File
Dim SubFo As Folder
Traite.Caption = "Recherche dans: " & StrRep
Pb.Value = 0
Set Fo = Fs.GetFolder(StrRep)
If Fo.Files.Count > 0 Then Pb.Max = Fo.Files.Count + 1


For Each Fi In Fo.Files
If InStr(1, Fi.Name, StrFichier) Then Call Li.AddItem(Fi.Name)
Pb.Value = Pb.Value + 1
Next
Me.Refresh
For Each SubFo In Fo.SubFolders
Call RechercheFichier(SubFo.Path, StrFichier)
Next


Set Fs = Nothing
Set Fi = Nothing
Set Fo = Nothing
Set SubFo = Nothing
End Sub

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 12:27
je ne trouve pas cette reference dans la liste..

surement un truc a installer je pense
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 13:43
Re,

Ce n est pas une reference c est un composant (menu Projet Composants ou Ctrl + T)

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 13:54
je les ai tous rajouté (toutes les versions)

il me retourne une erreur 424 sur cette ligne :

Traite.Caption = "Recherche dans: " & StrRep
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 14:01
Re,

Traite est iil bien le nom du Label que tu as rajoute?
Note: Tu n es pas obliger de mettre ce label c est juste pour indiquer ou le programme en est dans sa recherche (quel repertoire) pour teste deja tu peux essayer d'enlever cette ligne.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 14:30
Maintenant l'erreur se repercute dans la seconde ligne...

meme erreur 424

:(
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 14:43
Beh j vois pas parce que moi j ai pas d'erreur.

Tu as bien reussi a inclure un ProgressBar ou pas?

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 14:53
Ca y est ca fonctionne ;)

par contre ensuite je souhaite afficher un des documents resultant de ma recherche....ce qui figure dans le menu déroulant....

lol

sorry pour toutes mes questions
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 14:53
Ca y est ca fonctionne ;)

par contre ensuite je souhaite afficher un des documents resultant de ma recherche....ce qui figure dans le menu déroulant....

lol

sorry pour toutes mes questions
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 15:12
Encore merci pour ton aide précieuse...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 15:25
Bah de rien, nous sommes la pour ca.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
benzatte Messages postés 19 Date d'inscription mercredi 16 novembre 2011 Statut Membre Dernière intervention 16 novembre 2011
22 mars 2006 à 15:35
par contre si une ame charitable se sent l'ame de me donner le code pour l'ouverture des documents je prends ! lol

j'abuse quand meme...lol
0
Rejoignez-nous