IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Faire des recherches par mots clés dans des documents Word via un formulaire VBA


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    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 !
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    Merci Lelensois16 !
    Votre réponse est pertinante et ça me donne des idées.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    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.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 !

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    Salut,
    Les mots clès sont dans le texte. Et ils pêuvent être dans n'importe quel fichier word.
    merci d'avance !
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 !

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    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 ?
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    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.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Merci Olivier pour ton bout de code.

    Cette instruction me donne une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 46
    Points : 61
    Points
    61
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

    Albert Einstein

  14. #14
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    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.

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 !

  16. #16
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonsoir à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  18. #18
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    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 !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut Claude,


    Voilà le code avec la partie Recherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Recherche des mots spécifiques dans le document Word
    Par quangdao dans le forum VBA Word
    Réponses: 8
    Dernier message: 04/12/2008, 16h00
  2. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 13h53
  3. [MySQL] recherche par mots clés
    Par spartan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/02/2006, 16h11
  4. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 11h30
  5. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo