Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2007, 17h07   #1
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 118
Points : 32
Points : 32
Par défaut UserForm pour lancer une recherche dans plusieurs fichiers texte

Bonjour à tous,

Je cherche depuis quelques temps à faire une UserForm Word qui me permettrait de chercher un ou des mot(s) dans plusieurs fichiers texte se trouvant tous dans le même dossier.

J'ai déjà une UserForm qui me permet de faire une recherche similaire dans une table Access avec le code suivant (où "TextBox1" sert à entrer le mot rechercher et "Liste1" à afficher toutes les entrées correspondantes)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Dim rs As DAO.Recordset
Dim db As DAO.Database
 
Dim stTemp02 As String
Dim stSQL As String
 
 
 
UserForm1.Liste1.Clear
 
 
stSQL = "SELECT * From Table1 Where Champ1 LIKE """ & "*" & UserForm1.Textbox1 & "*" & """;"
 
Debug.Print stSQL
Set db = DAO.OpenDataBase("C:blabla.mdb")
Set rs = db.OpenRecordset(stSQL)
While Not rs.EOF
 
 UserForm1.Liste1.AddItem rs.Fields("ID")
 
 UserForm1.Liste1.List(UserForm1.Liste1.ListCount - 1, 1) = rs.Fields(Champ1)
 UserForm1.Liste1.List(UserForm1.Liste1.ListCount - 1, 2) = rs.Fields(Champ2)
 rs.MoveNext
Wend
Étant donné qu'il s'agit cette fois de plusieurs fichiers et non plus d'une seule table, je ne sais pas trop :
1. comment indiquer qu'il doit parcourir TOUS les fichiers qui se trouvent dans le dossier spécifié (qui est d'ailleurs toujours le même)
2. comment afficher les lignes trouvées dans ma liste1 (chaque ligne est composé de plusieurs champs séparés par des tabulations mais je suppose qu'il faut ici faire référence à la ligne entière ??!)

Est-ce possible à partir du code ci-dessus et comment ?

Merci beaucoup par avance pour votre aide.

Guillaume
GCAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h20   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Pour parcourir les fichiers d'un répertoire, jette une oeil ici

Pour la recherche d'un mot, il faut ouvrir le fichier, et faire la recherche dans le fichier.
Pour chaque document trouvé dans le répertoire,
Code :
1
2
3
 
 
Documents.Open ()
Ensuite, faire un Find dans le contenu du document.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 00h01   #3
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 118
Points : 32
Points : 32
Par défaut Pas possible donc ?

Salut Oli !
Si je comprends bien, il n'y a pas de solution pour faire apparaître directement les résultats dans la liste de la UserForm, c'est-à-dire sans avoir à ouvrir chacun des fichiers ? Pourtant, j'ai un programme de TAO qui n'est en fait "que" un ensemble de plusieurs macros et qui a un bouton permettant de chercher un mot dans tous les fichiers txt du dossier spécifié. Chaque ligne contenant le mot recherché dans les fichiers est ensuite affichée dans un nouveau document Word. Moi, j'aimerais un truc un peu comme ça mais bon là, la marcro est verrouillée bien entendu et je ne peux pas voir ce qu'il se cache derrière...

Sinon, je pensais utiliser des fichiers excel à la place des fichiers txt. Même principe que tout à l'heure, tous les fichiers dans le même dossier et on lance une recherche à partir de l'UserForm. Est-ce que là, il serait possible d'afficher tous les résultats dans la liste comme on le fait à partir d'une table Access (avec DAO par exemple) ???

Merci beaucoup.

Guillaume
GCAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 08h55   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Cette macro ouvre les fichier, mais sans le montrer, si tu affectes la propriété Visible à False, tu n'auras pas l'affichage.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 12h30   #5
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 118
Points : 32
Points : 32
Merci Oli !
J'ai regardé le lien que tu m'as donné mais apparemment le code en question recherche simplement dans le nom du fichier, moi je voudrais chercher dans le contenu. Et puis je ne sais pas comment on désigne une ligne du fichier texte pour la renvoyer vers la listbox.
Est-ce que tu sais si avec des fichiers excel, ce serait plus facile à mettre en oeuvre (on peut désigner des fichiers et des colonnes en DAO, non ??)

Merci pour ton aide !

Guillaume
GCAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 12h57   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Le premier lien, c'est pour chercher le nom des fichiers.
Dès que tu as la liste des fichiers, avec une boucle, au départ de word, tu ouvres chaque fichier, tu fais la recherche et tu obtiens un index mots -- fichiers.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2007, 11h33   #7
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 118
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 118
Points : 32
Points : 32
Salut !

Dans mon cas, ca ne m'avance pas vraiment de chercher le nom des fichiers parce que le code proposé cherche dans les noms de fichiers mais pas dans leur contenu.
Je m'explique : ces fichiers txt sont des listes de mots avec leur traduction, genre une colonne allemand, une colonne français avec des précisions si nécessaire.
Si par exemple, je recherche le mot "pêche", je voudrais tout d'abord que le code détermine tous les fichiers dans lequel le mot "pêche" apparaît (car il y a beaucoup de fichiers, plus de 500 !!) et qu'ensuite il ouvre chacun des fichiers où le mot apparaît, recherche la ligne ou les lignes en question et me l'affiche dans la listbox, si bien qu'à la fin j'ai tous les mots "pêche" trouvés avec les traductions correspondantes.
J'espère que je suis à peu près clair....

Je voulais garder ces fichiers au format Txt pour la simplicité de formatage qui permet d'importer les données dans d'autres programmes si besoin est. Cependant, là je me dis que peut-être ma recherche serait plus performante avec des fichiers excel ayant toujours les mêmes colonnes si bien que je pourrais préciser lors de la recherche dans quelle colonne chercher (français ou allemand ou autre) et la recherche serait donc plus rapide non ???

C'est possible, ca ???

Merci et encore merci.

Guillaume
GCAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2007, 11h38   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Pour la gestion de données, Access est plus approprié.

Ce que j'avais expliqué, tu dois récupérer le nom des fichiers.
L'exemple dans les sources sert à ça.

Une fois le nom des fichiers obtenu, il faut ouvrir chaque fichier pour trouver le mot que tu cherches.
Cette recherche, tu peux la faire ne Word, ou simplement en VBS.
Tu vas alors obtenir une liste de fichiers avec ton mot.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h03.


 
 
 
 
Partenaires

Hébergement Web