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. #21
    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 tout le monde !
    Moi quand j'éxécute le code d'Olivier ça m'ouvre les documents, les referme et m'affiche l'application word Nom : a.jpg
Affichages : 84
Taille : 39,1 Ko mais il m'affiche pas la page sur la quelle il a trouvé la chaine recherchée.

  2. #22
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour Serigne-BA,

    Vois ce code, dans lequel les commentaires devraient te pertmettre de comprendre ce qu'on y fait.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Sub Recherche()
     
    'Ceci suppose que la référence Microsoft Word xx.x Object Library a été ajoutée
    'Menu Outils>References et cocher Microsoft Word xx.x Object Library dans la liste
     
    'Défition des variables pour piloter Word
    Dim objWord As Word.Application
    Dim Doc As Word.Document
    'Définition d'un drapeau qui indiquera si nous avons dû ouvrir une session Word
               '(il se pourrait que l'utilisateur en ait déjà ouvert une)
    Dim bolOpenedWord As Boolean
    'Définition de variables utiles à notre application
    Dim Rs As DAO.Recordset    'ceci suppose que la référence Microsoft DAO X.X Object Library a été ajoutée
     
    'Nous tentons de récupérer une session Word déjà ouverte
    On Error Resume Next
    'S'il n'y a pas de session ouverte, l'instruction suivante va provoquer une erreur (N° 429)
    Set objWord = GetObject(, "Word.Application")
    'Nous traitons ici l'erreur éventuelle : Nous devons ouvrir une session Word
    If Err.Number = 429 Then
        Set objWord = CreateObject("Word.Application")
        bolOpenedWord = True 'ceci pour nous rappeler de refermer Word en fin de programme
    End If
    'Fin du traitement de l'erreur éventuelle
    On Error GoTo 0
    'Pour notre confort de contrôle (pendant la mise au point) nous rendons l'application visible
    objWord.Visible = True
    'Préparons un processus pour lire, un après l'autre, le chemin de chaque document à traiter
    'Créons un RecordSet basé sur la table "tChemins" ([Id],[Chemin])
    Set Rs = CurrentDb.OpenRecordset("SELECT * From tChemins")
    'On lance une boucle pour lire chaque chemin et lui appliquer le traitement souhaité
    While Not Rs.EOF
       Set Doc = objWord.Documents.Open(Rs.Fields("Chemin").Value)
         'faire ici ce qu'on doit
        Debug.Print Doc.Name   '''''''''''''''''''''''''''''
     '----------------------------------------------------------------------------------------------------------
        'Ici moi, je n'en sors pas : Access se plante, décommente les 2 lignes qui suivent pour voir chez toi
        'objWord.Selection.Find.Execute FindText:="LeMot-clé"  '-------à adapter----------------<<
        'If objWord.Selection.Find.Execute = true then Msgbox "OK"  '-------à adapter----------------<<
     '----------------------------------------------------------------------------------------------------------
     
         'Quand le traitement est terminé pour ce document, on le referme
        Doc.Close
         'On passe au suivant
        Rs.MoveNext
         'Et on boucle, jusqu'à la fin
    Wend
     
    'Nettoyage avant de sortir
    'on libère les variables
    Set Rs = Nothing
    Set Doc = Nothing
    'si on a dû ouvrir une session Word, on la referme (si non, on laisse la main à l'utilisateur
    If bolOpenedWord = True Then
       objWord.Quit
    End If
    End Sub

    Repère l'endroit où je dis que je n'en sors pas, essaie chez toi et décris ce que tu vois.

    Je viens de passer à Windows 7 et c'est peut-être l'origine de mon problème.

  3. #23
    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,
    Un grand merci pour les commentaires !!!
    Pour moi ça plante pas, il affiche bien le msgbox.
    Nom : b.jpg
Affichages : 51
Taille : 5,2 Ko

    Peut être que ton problème est lié à ta version d'Access ou de Système.

    Parcontre je voudrais pouvoir saisir dans un champ le mot clé à rechercher dans une zone de texte et quand je clique sur le bouton Rechercher soit :
    -il m'affiche dans le formulaire, une liste des fichiers qui contiennent la chaine recherchée pour qu'on puisse ensuite ouvrir les fichiers sur clique.
    -soit il m'affiche directement dans le formulaire la page word concernée.

  4. #24
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Citation Envoyé par Serigne-BA Voir le message
    Salut tout le monde !
    Moi quand j'éxécute le code d'Olivier ça m'ouvre les documents, les referme et m'affiche l'application word Nom : a.jpg
Affichages : 84
Taille : 39,1 Ko mais il m'affiche pas la page sur la quelle il a trouvé la chaine recherchée.
    Le résultat de la recherche est affiché dans la fenêtre exécution, si la recherche a réussi, on a true, false dans l'autre cas.

  5. #25
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    Encore un peu de temps je prépare un petit exemple.

    Mon problème est résolu : j'ai remplacé Word2003 par Word2000 et cette fois le code fonctionne.

    À bientôt.

  6. #26
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut [AC-2000] Rechercher dans Word depuis Access
    Voici un exemple de code pour rechercher, au départ d’Access si des documents Word contiennent un texte donné.

    Une table tChemins contient les champs :
    Id : clé autonum
    Chemin : le chemin complet des documents à explorer
    FlagTrouve : booléen.

    Dans le formulaire fRecherche, l’utilisateur saisit un texte à rechercher dans la zone de texte : zdtMotCle.
    La mise à jour de ce contrôle provoque l’exécution de ce code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub zdtMotCle_AfterUpdate()
    If IsNull(Me.ActiveControl) Then
       MsgBox "Vous devez introduire un texte à rechercher", vbCritical
       'Mettre la liste des documents trouvés à blanc
       Me.ZdlDocumentsTrouves.RowSource = ""
       Exit Sub
    End If
     
    'Ceci suppose que la référence Microsoft Word xx.x Object Library a été ajoutée
    'Menu Outils>References et cocher Microsoft Word xx.x Object Library dans la liste
     
    'Défition des variables pour piloter Word
    Dim objWord As Word.Application
    Dim Doc As Word.Document
    'Définition d'un drapeau qui indiquera si nous avons dû ouvrir une session Word
               '(il se pourrait que l'utilisateur en ait déjà ouvert une)
    Dim bolOpenedWord As Boolean
    'Définition de variables utiles à notre application
    Dim Rs As DAO.Recordset    'ceci suppose que la référence Microsoft DAO X.X Object Library a été ajoutée
     
    'Nous tentons de récupérer une session Word déjà ouverte
    On Error Resume Next
    'S'il n'y a pas de session ouverte, l'instruction suivante va provoquer une erreur (N° 429)
    Set objWord = GetObject(, "Word.Application")
    'Nous traitons ici l'erreur éventuelle : Nous devons ouvrir une session Word
    If Err.Number = 429 Then
        Set objWord = CreateObject("Word.Application")
        bolOpenedWord = True 'ceci pour nous rappeler de refermer Word en fin de programme
    End If
    'Fin du traitement de l'erreur éventuelle
    On Error GoTo 0
    'Pour notre confort de contrôle (pendant la mise au point) nous rendons l'application visible
    objWord.Visible = True
    'Préparons un processus pour lire, un après l'autre, le chemin de chaque document à traiter
    'Créons un RecordSet basé sur la table "tChemins" ([Id],[Chemin],[FlagTrouve])
    Set Rs = CurrentDb.OpenRecordset("SELECT * From tChemins")
    'On lance une boucle pour lire chaque chemin et lui appliquer le traitement souhaité
    While Not Rs.EOF
       Set Doc = objWord.Documents.Open(Rs.Fields("Chemin").Value)
         'Rechercher le mot-clé dans le document actuellement ouvert
         objWord.Selection.Find.Execute FindText:=Forms!fRecherche!zdtMotCle
          'si le mot est trouvé, "objWord.Selection.Find.Execute" vaut True, si non False
          'on reporte cette valeur dans le champ FlagTrouve de la table
          Rs.Edit
          Rs.Fields("FlagTrouve") = objWord.Selection.Find.Execute
          Rs.Update
         'Quand le traitement est terminé pour ce document, on le referme
        Doc.Close
         'On passe au suivant
        Rs.MoveNext
         'Et on boucle, jusqu'à la fin
    Wend
     
    'Nettoyage avant de sortir
    'on libère les variables
    Set Rs = Nothing
    Set Doc = Nothing
    'si on a dû ouvrir une session Word, on la referme (si non, on laisse la main à l'utilisateur
    If bolOpenedWord = True Then
       objWord.Quit
    End If
    'Vérifier qu'on a trouvé au moins un document
    If DCount("*", "tChemins", "FlagTrouve=True") <> 0 Then 'il y a des documents trouvés
        'Afficher le résultat dans le formulaire
        Me.ZdlDocumentsTrouves.RowSource = "SELECT [tChemins].[Chemin] FROM tChemins " _
                                                & "WHERE ((([tChemins].[FlagTrouve])=Yes));"
        DoCmd.GoToControl "ZdlDocumentsTrouves"
        ZdlDocumentsTrouves.Dropdown
     
    Else  'on n'a rien trouvé
        MsgBox "Aucun document trouvé !", vbInformation
    End If
    End Sub
    Ce qui aboutit à positionner le FlagTrouve à Yes pour les documents qui ont satisfait au critère de recherche.

    Une zone de liste modifiable se déploie pour afficher le chemin des documents trouvés.
    L’utilisateur clique sur l’un des chemins pour ouvrir le document, grâce à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ZdlDocumentsTrouves_AfterUpdate()
    'Ouvrir le document choisi
     ' cette instruction équivaut à un double-clic sur le nom d'un fichier
       'pour provoquer son ouverture avec le programme qui lui est associé.
    Shell "C:\WINDOWS\EXPLORER.EXE " & Me.ZdlDocumentsTrouves, vbNormalFocus
    End Sub
    Fichiers attachés Fichiers attachés

  7. #27
    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, un grand merci à toi Claude .
    Mais moi quand je clique sur un lien (dans la zone de liste) j'ai un code d'erreur d'exécution 76 chemin d'accés introuvable.
    Apparament j'ai pas accès sur C:\WINDOWS\EXPLORER.EXE

  8. #28
    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,

    Pour vérifier qu'il y a bien explorer.exe , ouvre la commande éxecuter "Ctrl + Windows" et saisit "explorer.exe"

    Explorer.exe est un fichier système qui te permet de naviguer entre les fichiers de Windows donc il faut l'ouvrir avec un fichier.

    Peux tu essayer avec cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "C:\WINDOWS\EXPLORER.EXE /n,/e," & CHEMINCOMPLETDUFICHIER ", vbNormalFocus

  9. #29
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Si tu emploies Explorer comme navigateur, il est peut-être à un autre endroit sur ton PC. Dans ce cas, modifie le chemin renseigné dans mon code.

    Si tu utilises un autre navigateur, cherche comment il fonctionne en ligne de commande et adapte l'instruction Shell en conséquence.

  10. #30
    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,
    @ Lelensois16 : j'ai testé la commande mais ça marche toujours pas.
    Quand j'execute (explorer.exe) il me renvoie vers mes documents.

    @ Claude : Oui j'utilise Explorer mais j'ai pas accés à Windows, mon compte est limité, j'ai pas un compte administrateur sur cette machine avec laquelle je travaille, de même que tous les gens (3 autres personnes) qui auront à utiliser l'application.

    En tout cas merci pour tout !!!

  11. #31
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ZdlDocumentsTrouves_AfterUpdate()
    'Ouvrir le document choisi
     ' cette instruction équivaut à un double-clic sur le nom d'un fichier
       'pour provoquer son ouverture avec le programme qui lui est associé.
    Shell "EXPLORER.EXE " & Me.ZdlDocumentsTrouves, vbNormalFocus
    End Sub

  12. #32
    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
    Oui finalement ça marche avec cette commande !
    Je tiens à vous remercier vous tous, particulièrement Claude LELOUP, Olivier LEBEAU, Lelensois16, Godzestla.
    Après avoir recherché un fichier par mot clé, il y’a seulement un paragraphe qui m’intéresse sur la page word qui s’affiche.
    Et l’objectif c’est de générer automatiquement un document word comportant différents paragraphes recherchés.
    Je voudrais :
     Un bouton pour créer une nouvelle page word :  ok
     Faire la recherche du paragraphe :  ok
     Et quand je sélectionne le paragraphe avec le souris, qu’il soit directement copié dans la nouvelle page créée  ?
     Diviser l’écran en deux parties pour avoir l’œil sur tout. Sur la première partie ma nouvelle page créée et qui se rempli au fur et à mesure et sur l’autre partie soit le formulaire de recherche soit le résultat de la recherche.  ?
     Rechercher encore un autre paragraphe qui sera ensuite copié dans la même page créée (en dessous du premier paragraphe)  ok
     Et au final je pourrai générer ma nouvelle page.
    J’ai pensé à quelque chose comme ça :
    Nom : page.jpg
Affichages : 63
Taille : 44,5 Ko

    Est ce que quelqu'un sait si les deux point où j'ai mis les points d'interrogations sont faisables sur VBA ?
    Est ce que necessaire que je crée un nouveau sujet de discussion et marqué celui-ci comme résolu ? ou j'attends que tout soit résolu ?
    Merci d'avance !

  13. #33
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Dis, blague dans le coin, les prévisions météo ça ne t'intéresse pas ?


    Pour ton premier "?" , tu es dans Word
    =>
    - (<CTRL> + <C>) pour copier le paragraphe dans le presse-papier ;
    - un clic dans la barre des menus, pour ouvrir un nouveau document ;
    - (<CTRL> + <V>) pour y coller le presse-papier.

    Quant au deuxième "?", il doit bien y avoir un moyen mais la valeur ajoutée me paraît faible en regard de la complexité.

    Bonne continuation.

  14. #34
    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
    Okay Claude, mais je comprends pas ta phrase :

    Dis, blague dans le coin, les prévisions météo ça ne t'intéresse pas ?

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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, 17h00
  2. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 14h53
  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, 17h11
  4. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 12h30
  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, 11h56

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