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 :

Intéraction Word - Access


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut Intéraction Word - Access
    Salut à tous !

    J'ai un petit (pour moi quand même un peu grand) problème que je ne sais pas comment résoudre :
    Je voudrais faire une macro Word qui me permette de copier un mot sélectionné dans le doc. Word, puis de passer dans un formulaire Access déjà ouvert, de faire un focus sur une zone texte (me.txtCherche), de coller le mot copié dans Word et, enfin, de lancer une procédure.
    Concrétement, j'ai un formulaire Access avec lequel je cherche des mots dans une liste de vocabulaire (une espèce de dictionnaire) et je voudrais pouvoir chercher un mot du doc. Word dans le formulaire Access en une seule action et sans avoir à chaque fois à copier/coller, etc...
    Quelqu'un pourrait-il m'aider ?
    Merci d'avance !

    Guillaume

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    salut, je te propose de passer par le macro recorder dans un premier temps, ca te donnera des pistes, qu'on verra par la suite ensemble

  3. #3
    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
    Tu ne doispas passer par un formulaire, mais faire la recherche directement dans la table.

    Pour accéder aux données de la table, il faut utiliser du DAO.

    Pour utiliser du DAO, il y a un tuto extra ici

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    J'ai déjà essayé avec l'enregistreur de macro. Pour le moment, j'arrive à copier le mot en question et à passer sur la fenêtre Access (qui est déjà ouverte) avec le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Goto_ACCESS_WINDOW()
    '
        Dim Task1
        Selection.Copy
     
        For Each Task1 In Tasks
            If InStr(Task1.Name, "FrmTermino") > 0 Then
                Task1.Activate
                Task1.WindowState = wdWindowStateNormal
            End If
        Next Task1
            Selection.PasteAndFormat (wdPasteDefault)
     
    End Sub

    Par contre, je ne sais pas après comment arriver directement dans la bonne zone de texte de mon formulaire et y coller le mot copié dans Word.

    Pour ce qui est de la recherche directement dans la table avec DAO, disons que j'aime bien la manière dont mon formulaire me présente les infos dont j'ai besoin. En plus, (si un jour ca marche ) je voudrais utiliser le même principe pour appeler un autre formulaire avec lequel cette fois je pourrais entrer "à la volée" dans ma base Access, des mots copiés dans un doc. Word.

    C'est pour ça que je préférerais autant passer par le formulaire....

    Quelqu'un aurait-il une idée pour mon "SetFocus" et "coller" ?

    Merci!

    Guillaume

  5. #5
    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
    Le principe est le suivant :
    Déclarer l'application Access dans Word
    Déclarer un recordset
    Une sentence sql pour extraire le bon recordset
    Savoir ce que tu désire récupérer dans la table.

    Ensuite tu as le choix, soit tu intègres directement les données dans ton document, soit tu passes par un formulaire (UserForm) Word.

    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
     
    Sub OpenDataBase()
    Dim aApp As New Access.Application
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim stSQL As String
    Dim stTemp As String
    Dim stFinal As String
     
     
    stTemp = Selection.Text
    stSQL = "SELECT * FROM MATable Where MonChamp = """ & stTemp & """;"
     
     
     
    Set db = DAO.OpenDatabase("C:\temp\maDB.MDB")
    Set rs = db.OpenRecordset(stSQL)
    stFinal rs.fiels("MonChamp2")
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
     
    Selection.TypeText stFinal
     
    End Sub
    Voilà à quoi devrait ressembler ton code.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Salut et merci pour ton aide !

    Malheureusement, je ne comprend pas tout !!!
    Qu'est-ce que "monchamps2" est censé représenter ?
    N'y a-t-il pas une solution pour tout simplement copier le mot dans ma textbox et déclencher le code qui lance la recherche dans mon formulaire Access ?
    En fait le mot recherché n'est pas forcément présent une seule fois, il se peut qu'il y ait plusieurs enregistrements pour ce mot, et mon formulaire me les liste alors comme je le veux. C'est pour ça que j'insiste sur l'utilisation du formulaire Access depuis Word.
    Une idée ?

    Merci beaucoup

    Guillaume

  7. #7
    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
    Un formulaire Word, oui, mais de copier coller d'une application à l'autre avec des actions de code.

    Essaie de tout faire au départ d'une application ou de l'autre, mais mélanger le tout

    Champs2 représente le champ qui contient la seconde données, n'ayant aucune indications sur ta db ou ton document, il faut un peu improviser.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Salut !

    J'y ai pensé aussi à passer par un formulaire Word mais le problème, c'est que je sais pas trop comment procéder.
    Disons que j'ai un formuaire avec une "Textbox" appelée "TxtCherche", un bouton appelé "CmdCherche" et une liste pour les résultats appelés "LstResultat". Est-ce que je peux appliquer le code DAO précédent au bouton pour envoyer la requête et surtout comment est-ce que je dois faire pour que les résultats trouvés dans la table Access s'affichent dans ma liste "LstResultat" dans Word ?

    Merci beaucoup pour votre aide

    Guillaume

  9. #9
    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
    Dans le code que je t'ai donné, tu as déjà une partie de réponse à ta question.

    L'accès en DAO aux données s'y trouve.

    Il te reste à lire le tuto que j'avais indiqué.

    Le formulaire Word se comporte comme le formulaire Access, un texte d'entrée, dans le code que je te donne, j'ai utilisé la sélection.

    Un texte de sortie, j'ai aussi utilisé la sélection.

    Le code du bouton c'est aussi sur OnClick

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Salut et merci pour tous ces renseignements.
    Je vais "étudier" plus en détail ce tuto sur DAO et essayer tout ça.
    Par contre, comment est-ce que j'indique la source de la liste dans RowSource ? SQL c'est possible, comme dans Access ?

    Merci encore

    Guillaume

  11. #11
    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
    Si mes infos sont bonnes, les données de RowSource sont séparées par des ";"
    Il suffit dans la boucle DAO de mettre les données obtenues dans une variable et ensuite d'affecter la variable à RowSource.

  12. #12
    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
    Un petit dessin, une DB et un document avec un formulaire.


    Le tout est à mettre dans le C:\temp

    ftp://ftp-developpez.com/heureuxoli/files/TEMP.zip

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    GÉNIAL ! Merci beaucoup ! C'est tout à fait ce dont j'avais besoin pour chercher dans la table. Ça me fait une bonne base pour faire quelque chose sur mesure, depuis le temps que je patauge !

    J'ai quand même encore une petite question (je sais, je suis pénible ):

    Je voudrais pouvoir faire une recherche plein texte, c'est-à-dire par exemple que lorsque je tape "poche", il trouve par ex. aussi "empocher".
    Je pensais y arriver facilement en utilisant le même code que dans Access à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stSQL = "SELECT * From tblTermino_Kunden Where DE = """ & "*" & Me.TextBox1 & "*" & """;"
    mais non ça ne marche pas. J'ai essayé plusieurs autres trucs sans succès.
    Comment est-ce que je pourrais écrire ça ??

    Encore merci !

    Guillaume

  14. #14
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 941
    Points : 4 865
    Points
    4 865
    Par défaut
    Salut, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stSQL = "SELECT * FROM tblTermino_Kunden WHERE DE LIKE '*" & Me.TextBox1 & "*' ;"

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Salut !

    C'est ça, j'ai remplacé simplement le "=" par "LIKE" dans ma ligne et ça fonctionne. C'est d'ailleurs aussi comme ça dans mon code d'origine mais j'avais mal recopié.

    Merci beaucoup !

    Guillaume

  16. #16
    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
    Alors, n'oublies pas le

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lier un fichier word Access 2000
    Par chebzine dans le forum Access
    Réponses: 3
    Dernier message: 30/08/2006, 10h30
  2. Réponses: 4
    Dernier message: 27/06/2006, 12h02
  3. [WORD ACCESS] masque:etat
    Par Jahprend dans le forum Access
    Réponses: 14
    Dernier message: 26/06/2006, 16h40
  4. fusion Word / Access
    Par stef33 dans le forum Access
    Réponses: 1
    Dernier message: 23/03/2006, 01h26
  5. Intéraction MySQL / Access
    Par KinF dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 10/11/2005, 01h17

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