|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Bonjour tout le monde,
Je dois réaliser une application en VBA avec une base de données ACCESS qui doit me permettre de faire des recherches par mots clés dans des documents Word. Après recherche, le document Word qui contient les mots clés recherchés doit s’ouvrir. D’abord pour ma base de données je ne sais pas s’il faut y stocker les documents Word ou je dois les stocker dans mon disque et créer une table qui contient les noms des documents Word et leur lien ? Est-ce que quelqu’un sait s’il est possible de réaliser ce genre d’application en VBA ? Merci pour votre aide ! |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Romain M.Étudiant Inscription : avril 2009 Messages : 167 ![]() |
Bonjour,
Voici quelques idées ( mais je suis qu'un débutant ) : - Pourquoi pas mettre tous les fichiers word dans un unique répertoire , ensuite créer une procédure en VBA qui liste toutes les fichiers d'un repertoire : Code :
- Ensuite utiliser quelques procédures avec la technologie automation : http://access.developpez.com/faq/?page=Word bon courage |
||
|
|
10
|
|
|
#3 |
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Merci Lelensois16 !
Votre réponse est pertinante et ça me donne des idées. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonjour Serigne-BA,
Une piste de réflexion. 1 Dans ta BDD Access, - 11 une table qui contient les chemins des fichiers que tu veux explorer, donc ta BDD ne doit pas contenir les documents en tant que tels (sinon ta BDD va devenir vite obèse !) - 12 un formulaire pour pouvoir saisir le texte à rechercher et lancer le processus de recherche et récupérer le résultat. Jusque-là, pas de problème sans doute. 2 MAIS quel processus ? - 21 Quelque chose qui devrait exploiter la procédure de recherche prévue par Windows, pour trouver tous les fichiers (quels qu’ils soient) ; - 22 récupérer la liste des fichiers trouvés par Windows; - 23 retenir ceux dont l’adresse est dans ta table ; - 24 et faire ce que tu dois avec cette dernière sélection. Si tu as besoin d’aide pour les points 11, 12, 23 et 24, je peux t’aider. Par contre pour 21 et 22, il faudrait qu’un ténor ou une diva de l’API lise ta demande et donne un bout de code. Peut-être aurais-tu intérêt à poster une demande limitée à ces points dans le forum VBA. Une solution existe très probablement et si non, il y aura bien quelqu’un pour relever le défi. |
|
|
10
|
|
|
#5 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut,
Tu ne donnes pas assez d'info. Les mots clès sont-ils dans le texte ou dans les propriétés des documents ? Pour la navigation dans les répertoires Windows, il y a un bon tuto là : http://warin.developpez.com/access/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 ! |
|
|
10
|
|
|
#6 |
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Salut,
Les mots clès sont dans le texte. Et ils pêuvent être dans n'importe quel fichier word. merci d'avance ! |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut,
Il faut dans ce cas lancer une recherche dans les documents avec la fonction Word de recherche et remplacement. on fait une boucle sur les documents. Là aussi, deux solutions, si le chemin des documents est contenu dans une table, on fait une boucle sur les enregistrements de la table, si ce n'est pas le cas, il faut faire une boucle sur les fichiers du répertoire ou des répertoires. On pourrait envisager de remplir la table avec les documents trouvés, c'est aussi une solution.
__________________
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 ! |
|
|
10
|
|
|
#8 |
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Je précise que je suis un grand débutant. Je suis désolé si je pose des questions bêtes.
-Pour commencer, le chemin des documents est contenu dans une table. -C’est quoi la fonction Word de recherche et remplacement ? c'est une fonction qu'on utilise avec VBA ? |
|
|
00
|
|
|
#9 | |
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Bonjour Claude,
Merci pour ta réponse ! je reviendrai vers toi en cas de besoin. Citation:
|
|
|
|
00
|
|
|
#10 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut,
Oui, c'est une fonction que l'on utilise aussi avec VBA. Contrairement à Access, la très grande majorité des fonctions utilisées en VBA le sont aussi avec l'interface graphique. Si le chemin des documents est déjà connu dans une table Access, il suffit de faire une boucle sur les enregistrement et pour chaque enregistrement on ouvre le document pour lancer la recherche. Tu auras besoin d'une table supplémentaire pour stocker le résultat de ta recherche pour pouvoir être ouvert par la suite. Dans ton premier post, tu mentionnes que les documents contenant les mots clés seront ouverts. Je pense que c'est une mauvaise idée de les ouvrir systèmaiquement, si tu as 100 documents qui répondent au critère, tu risques d'être submergé. Donc, la première chose à faire est d'ouvrir les enregistrements de la table pour ouvrir le document. on pourrait envisager un code de ce genre : Code :
__________________
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 ! |
||
|
|
10
|
|
|
#11 | ||
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonjour,
Merci Olivier pour ton bout de code. Cette instruction me donne une erreur : Code :
Set oDoc = wApp.documents.Open(rs.Fields(1)) Dans le code qui suit, je parviens à ouvrir chaque document, la partie mise en commentaire fait planter Access. Code :
Peux-tu corriger ? Bonne journée. |
||
|
|
10
|
|
|
#12 | ||||
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Bonjour Olivier
Une petite précision : le mot clé recherché se trouvera uniquement sur au plus 2 fichiers word, donc il n’y pas risque de submerger. Merci pour ton bout de code. Je l’ai utilisé mais j’ai une erreur (le moteur de base de données ne peut pas trouver la table ou la requête source) au niveau de cette instruction : Citation:
Citation:
|
||||
|
|
00
|
|
|
#13 | |||
|
Membre du Club
![]() Serigne BAÉtudiant Inscription : août 2011 Messages : 47 ![]() |
Bonjour Claude
J’ai testé ton bout de code mais je voudrais savoir s’il est possible de cacher les fichiers ouverts car imagine si on a 100 fichiers ce n’est pas agréable de les voir tous ouvert ? Citation:
|
|||
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() Chercheur de bonheur Inscription : août 2007 Messages : 2 255 ![]() |
Citation:
pour cacher les fichier, il faut juste changer l'instruction en Mais prudence. En cas de bug ou de plante, la tache word reste souvent active et non visible et tu ne t'en rends pas toujours compte. Remarque que 1 seul fichier word est ouvert à la fois !
__________________
(\ _ /) Cordialement G@dz (='.'=) (")-(") Vous avez des neurones. Sollicitez-les. ![]() . Si vous êtes aidé, pensez à Voter.
|
|
|
|
10
|
|
|
#15 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut Claude,
As-tu le message d'erreur ? Le code est tout à fait générique, n'ayant pas le nom de la table ni des documents, j'ai utilisé le second champ de la table rs.Fields(1), sachant qu'Access commence à 0, il faut donc que ce champ contienne le nom complet des fichiers. Peut-être que .Value va corriger l'erreur, je pensais que le cast était bon. Pour contre wApp.Visible = False, ne va pas cacher les documents, mais l'application Word. Si on ouvre 100 documents, je pense que Word va planter, qu'il soit visible ou non.
__________________
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 ! |
|
|
10
|
|
|
#16 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Bonsoir à tous,
Code :
Set oDoc = wApp.documents.Open(rs.Fields(1)) J'ai bien un chemin correct dans (rs.Fields(1)). NB Si j'ai mis c'est pour vérifier pas à pas que les documents étaient effectivement ouverts... et immédiatement refermés. |
|
|
00
|
|
|
#17 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut Claude,
J'ai corrigé mon code pour qu'il fonctionne. Il faut ajouter la référence à la bibliothèque Word au projet (Outils Références) Code :
__________________
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 ! |
||
|
|
10
|
|
|
#18 |
![]() ![]() ![]() Claude LELOUPChercheur de loisirs (ayant trouvé !) Inscription : novembre 2006 Messages : 5 242 ![]() |
Olivier,
Excuse-moi d’insister : cette fois tu nous donnes la syntaxe pour ouvrir le document. Jusque-là je n’avais plus de problème. C’est dans l’expression de la recherche que je n’en sors pas. Ce que je voudrais proposer : Dans une table, on a le chemin et un champ booléen « selection ». La sub devrait - remettre « selection » à « non » (pas de problème) ; - parcourir tous les enregistrements (pas de problème) ; - ouvrir Word (pas de problème) ; - ouvrir, un à un, chaque document de la liste (j’ignore la syntaxe) ; - rechercher si ce document contient oui ou non la chaine de caractères (j’ignore la syntaxe) ; - si oui positionner « selection » à -1 (pas de problème) ; - refermer ce document (j’ignore la syntaxe) ; - boucler jusqu’à la fin de la liste (pas de problème). En exploitant « selection », on peut alors afficher dans le formulaire, une liste des fichiers qui contiennent la chaine, et repasser la main à l’utilisateur (pas de problème). Peux-tu ajouter dans ton code, le bout qui me manque encore ? Je t'enverrai alors un MP pour te dire que t'es beau et sans rien demander !
|
|
|
10
|
|
|
#19 | ||||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut Claude,
Voilà le code avec la partie Recherche. Code :
Code :
__________________
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 ! |
||||
|
|
10
|
|
|
#20 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 324 ![]() |
Salut Claude,
J'ai oublié, quelle est ta version d'Access, la DB de test est en 2010.
__________________
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 ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com