Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 12/08/2011, 11h29   #1
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
Par défaut Faire des recherches par mots clés dans des documents Word via un formulaire VBA

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 !
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 12h32   #2
Membre confirmé
 
Avatar de lelensois16
 
Homme Romain M.
Étudiant
Inscription : avril 2009
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Romain M.
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 167
Points : 204
Points : 204
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 :
1
2
3
4
5
6
7
8
9
10
11
Dim FileName As String
Dim Path As String
Dim Filter As String
 
Path = "c:\temp\*.*"
 
FileName = Dir(Path)
While FileName <> ""
    Debug.Print FileName
    FileName = Dir
Wend
- Cette procédure alimetera une table "Fich_Word" qui peut contient la liste des noms de fichier. Cette table peut être mise à jour soit en ouvrant la BD ou via un bouton mise à jour ( via un update )

- Ensuite utiliser quelques procédures avec la technologie automation : http://access.developpez.com/faq/?page=Word

bon courage
lelensois16 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/08/2011, 12h43   #3
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
Merci Lelensois16 !
Votre réponse est pertinante et ça me donne des idées.
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2011, 11h06   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
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.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/08/2011, 12h04   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/08/2011, 12h22   #6
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
Salut,
Les mots clès sont dans le texte. Et ils pêuvent être dans n'importe quel fichier word.
merci d'avance !
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 12h32   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/08/2011, 13h08   #8
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
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 ?
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 14h24   #9
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
Bonjour Claude,
Merci pour ta réponse ! je reviendrai vers toi en cas de besoin.

Citation:
Envoyé par ClaudeLELOUP Voir le message
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.
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h43   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 :
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
26
27
28
29
Dim wApp As Word.Application
Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
 
Set oDB = CurrentDb
Set rs = oDB.OpenRecordset(SQL)
 
Set wApp = New Word.Application
 
SQL = "SELECT * From MaTable"
 
While Not rs.EOF
Set oDoc = wApp.documents.Open(rs.Fields(1))
With Selection.Find
    .Text = "Mon Mot clé"
    If .Execute Then Debug.Print rs.Fields(1)
End With
 
oDoc.Close
rs.MoveNext
 
Wend
wApp.Quit
Set wApp = Nothing
Set rs = Nothing
Set oDB = Nothing
__________________
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 10
Vieux 17/08/2011, 06h25   #11
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Merci Olivier pour ton bout de code.

Cette instruction me donne une erreur :
Code :
Set oDoc = wApp.documents.Open(rs.Fields(1))
J'ai essayé d'adapter en m'inspirant des exemples de la FAQ, mais je ne parviens pas à coder les instructions pour lancer la recherche et en récupérer le résultat.

Dans le code qui suit, je parviens à ouvrir chaque document, la partie mise en commentaire fait planter Access.
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
26
27
28
29
30
31
32
33
Public Sub recherche()
Dim wApp As Word.Application
Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
 
Set oDB = CurrentDb
 
Set wApp = CreateObject("Word.application")
wApp.Visible = True
 
SQL = "SELECT * From Chemins"
Set rs = oDB.OpenRecordset(SQL)
 
While Not rs.EOF
  wApp.documents.Open (rs.Fields(1))
  Set oDoc = wApp.ActiveDocument  ''''''''''''''''''''''''
'With Selection.Find
'    .Text = "configuration"
'    If .Execute Then Debug.Print rs.Fields(1)
'End With
  Debug.Print oDoc.Name   '''''''''''''''''''''''''''''
  oDoc.Close
  rs.MoveNext
 
Wend
wApp.Quit
Set wApp = Nothing
Set rs = Nothing
Set oDB = Nothing
End Sub

Peux-tu corriger ?

Bonne journée.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 09h43   #12
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
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:
Set rs = oDB.OpenRecordset(SQL)
Citation:
Envoyé par Heureux-oli Voir le message
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 :
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
26
27
28
29
Dim wApp As Word.Application
Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
 
Set oDB = CurrentDb
Set rs = oDB.OpenRecordset(SQL)
 
Set wApp = New Word.Application
 
SQL = "SELECT * From MaTable"
 
While Not rs.EOF
Set oDoc = wApp.documents.Open(rs.Fields(1))
With Selection.Find
    .Text = "Mon Mot clé"
    If .Execute Then Debug.Print rs.Fields(1)
End With
 
oDoc.Close
rs.MoveNext
 
Wend
wApp.Quit
Set wApp = Nothing
Set rs = Nothing
Set oDB = Nothing
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 09h45   #13
Membre du Club
 
Homme Serigne BA
Étudiant
Inscription : août 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Serigne BA
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 47
Points : 52
Points : 52
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:
Envoyé par ClaudeLELOUP Voir le message
Bonjour,

Merci Olivier pour ton bout de code.

Cette instruction me donne une erreur :
Code :
Set oDoc = wApp.documents.Open(rs.Fields(1))
J'ai essayé d'adapter en m'inspirant des exemples de la FAQ, mais je ne parviens pas à coder les instructions pour lancer la recherche et en récupérer le résultat.

Dans le code qui suit, je parviens à ouvrir chaque document, la partie mise en commentaire fait planter Access.
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
26
27
28
29
30
31
32
33
Public Sub recherche()
Dim wApp As Word.Application
Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
 
Set oDB = CurrentDb
 
Set wApp = CreateObject("Word.application")
wApp.Visible = True
 
SQL = "SELECT * From Chemins"
Set rs = oDB.OpenRecordset(SQL)
 
While Not rs.EOF
  wApp.documents.Open (rs.Fields(1))
  Set oDoc = wApp.ActiveDocument  ''''''''''''''''''''''''
'With Selection.Find
'    .Text = "configuration"
'    If .Execute Then Debug.Print rs.Fields(1)
'End With
  Debug.Print oDoc.Name   '''''''''''''''''''''''''''''
  oDoc.Close
  rs.MoveNext
 
Wend
wApp.Quit
Set wApp = Nothing
Set rs = Nothing
Set oDB = Nothing
End Sub

Peux-tu corriger ?

Bonne journée.
Serigne-BA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h20   #14
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Citation:
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 ?
Bonjour,

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.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 17h55   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 20h38   #16
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonsoir à tous,

Code :
Set oDoc = wApp.documents.Open(rs.Fields(1))
J'ai "Erreur d'exécution 13" incompatibilité de type.

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.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 21h03   #17
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 :
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
26
27
Sub OuvrirFichier()
Dim wApp As Word.Application
'Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
SQL = "SELECT * From tbl1"
Set oDB = CurrentDb
Set rs = oDB.OpenRecordset(SQL)
 
Set wApp = New Word.Application
wApp.Visible = True
 
 
While Not rs.EOF
wApp.Documents.Open (rs.Fields(1).Value)
 
rs.MoveNext
 
Wend
 
 
'Set wApp = Nothing
Set rs = Nothing
Set oDB = Nothing
End Sub
J'ai deux fichiers et il sont bien ouverts tous les deux.
__________________
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 10
Vieux 18/08/2011, 01h55   #18
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
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 !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 19h41   #19
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
Salut Claude,


Voilà le code avec la partie Recherche.

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
26
27
28
29
30
31
32
33
Sub OuvrirFichier()
Dim wApp As Word.Application
Dim oDoc As Word.Document
 
Dim SQL As String
Dim oDB As DAO.Database
Dim rs As DAO.Recordset
SQL = "SELECT * From tbl1"
Set oDB = CurrentDb
Set rs = oDB.OpenRecordset(SQL)
 
Set wApp = New Word.Application
wApp.Visible = True
 
 
While Not rs.EOF
Set oDoc = wApp.Documents.Open(rs.Fields(1).Value)
With wApp.Selection.Find
    .Text = "ol"
    .Forward = True
    Debug.Print .Execute
'Si la recherche aboutit, la valeur vraie est renvoyée.
End With
oDoc.Close
 
 
rs.MoveNext
 
Wend
 
Set rs = Nothing
Set oDB = Nothing
End Sub
On pourrait utiliser cette valeur pour mettre à jour le champ booléen de la table.

Code :
1
2
rs.Fields(2).Value = .Execute
rs.update
__________________
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 10
Vieux 18/08/2011, 21h46   #20
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 324
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 324
Points : 29 225
Points : 29 225
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web