Code de recherche de fichier en VB6 [Résolu]

benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 11:02 - Dernière réponse : benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention
- 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
Afficher la suite 

17 réponses

jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 14:56
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 11:16
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 11:19
0
Utile
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.... :'(
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 11:38
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 12:05
0
Utile
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
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 12:15
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 12:27
0
Utile
je ne trouve pas cette reference dans la liste..

surement un truc a installer je pense
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 13:43
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 13:54
0
Utile
je les ai tous rajouté (toutes les versions)

il me retourne une erreur 424 sur cette ligne :

Traite.Caption = "Recherche dans: " & StrRep
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 14:01
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 14:30
0
Utile
Maintenant l'erreur se repercute dans la seconde ligne...

meme erreur 424

:(
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 14:43
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 14:53
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 14:53
0
Utile
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
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 15:12
0
Utile
Encore merci pour ton aide précieuse...
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 22 mars 2006 à 15:25
0
Utile
Bah de rien, nous sommes la pour ca.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
benzatte 19 Messages postés mercredi 16 novembre 2011Date d'inscription 16 novembre 2011 Dernière intervention - 22 mars 2006 à 15:35
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.