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

Access Discussion :

Publipostage Access/Word avec userform dans Word


Sujet :

Access

  1. #1
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut Publipostage Access/Word avec userform dans Word
    Bonjour,

    J'ai créé un fichier "test.docm" (contrat à régulariser avec de multiples possibilités : distance avec ajout d'un formulaire de rétractation/sur place; forfait/temps passé; etc.) dans word qui me permet, à son ouverture, de voir un "userform1" avec différents champs (des "textbox") qui, une fois remplis, permettent de remplir les signets du document word et de le sauvegarder.

    Ce fichier "test.docm" fonctionne sans aucun lien avec ma base de donnée, l'idée étant de pouvoir générer les conventions sans avoir à ouvrir, à chaque fois, la base de données ....

    Et puis, un jour, je me suis dit qu'il serait utile de pouvoir ouvrir ce fichier depuis ma base de données or, à ce stade, autant je sais faire un publipostage depuis access et modifier les signets avec des données provenant d'Access mais, là je sèche.

    En effet, je veux simplement :

    - lancer le publipostage depuis access,
    - ouvrir le fichier "test.docm" avec son userform1
    - arrêter le process de publipostage sur le userform1
    - injecter des données de mon formulaire access dans un textbox de mon userform1
    - continuer de compléter mon userform1 ...

    Et là, c'est le drame

    Si quelqu'un avait une idée pour :

    - arrêter le process de publipostage sur le userform1
    - injecter des données de mon formulaire access dans un textbox de mon userform1

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 548
    Points
    24 548
    Par défaut
    Bonjour,

    Franchement je pense qu'il y a un problème dans le process que tu as imaginé.

    Arrêter un publipostage : il n'y a aucune méthode dans l'objet MailMerge pour faire çà. Quand l'Execute est fait il procède jusqu'au bout.

    Prépare ton publipostage côté Access et quand il est complet tu le lance.

    Sinon n'utilise pas un publipostage mais un recherche/Remplacer Word, là tu maitrisera tout mais ça demande plus de boulot.

    Cordialement,

  3. #3
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    Merci pour le conseil.

    Sans parler de "publipostage", est-il néanmoi,s possible dans ce cas d'ouvrir le fichier ".docm" depuis access pour, ensuite, injecter des données de mon formulaire Access dans le userform du document word ?

    En effet, j'utilise ce code pour ouvrir le document word mais le "userform1" n'apparaît pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim WDoc As Word.Document
    Set WDoc = GetObject("C:\CONVENTIONS\test - Copie8.docm")
    WDoc.Application.Visible = True
    WDoc.Application.WindowState = wdWindowStateNormal
    WDoc.Activate
    Je fait CTRL +ALT + SUPPR et dans le gestionnaire tâches, je vois bien que word est lancé mais je dois, depuis le gestionnaire de tâches, double-cliquer sur le "userform1" pour qu'il apparaîsse .... ce n'est pas très pratique

  4. #4
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut
    Pour ouvrir votre usf dans word il faut sur l'event AutoOpen ou DocumentOpen placer monusf.Show.
    Pour alimenter word via un frm d'access, utiliser le RecordsetClone du frm pour alimenter la source de votre usf qui est forcément dans un format tableau.

  5. #5
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    @hyperion13

    J'ai déjà mis dans "document_open" le fameux "userform1.show" => quand je lance le "*.docm" directement, l'userform se lance sans aucune difficulté. Par contre, si j'ouvre mon "*.docm" depuis Access, le processus "winword.exe" est bien lancé mais l'userform n'apparaît pas, je dois aller dans le "gestionnaire de tâches" pour le lancer "à la main" ...

    Quant aux données du formulaire access, je veux récupérer le champ "nom" (me.nom) du mon formulaire pour le mettre dans un "textbox" de mon userform1 du "*.docm" ...

    Je coince sur les deux aspects.

    Merci pour le temps consacré

  6. #6
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim wdApp As Object, wdDoc As Object
    Dim strFilePath As String, strSlash As String, strFolder As String, strFileName As String
     
    strFilePath = CurrentProject.Path
    strSlash = "\"
    strFolder = "test"
    strFileName = "copie8.docm"
    strFilePath = strFilePath & strSlash & strFolder & strSlash & strFileName
     
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    wdApp.Activate
    Set wdDoc = wdApp.Documents.Open(strFilePath)

  7. #7
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Merci !

    Le formulaire est actif avec ce code et apparaît donc "automatiquement".

    Plus qu'à trouver comment travailler avec le formulaire access et le userform de word ....

  8. #8
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    (re)bonjour

    J'avoue sécher sur l'envoi du contenu d'un champ de formulaire ACCESS vers un userform d'un document WORD en vba

  9. #9
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re
    un truc comme ça je pense, mais sans garantie
    ActiveDocument.Bookmarks("nomdusignet").Range.Text = nomcontroleformulaire.
    Un tuto ici.

  10. #10
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Merci pour votre aide (pour l'affichage du userform à l'ouverture du *.docm) mais çà ne fonctionne pas ... j'ai donc changé mon fusil d'épaule.

    Je parcours par le userform de WORD la base de données ACCESS pour obtenir le résultat dans un combobox et choisir ce que je veux :

    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
    ComboBox1.Clear
    Dim cheminBd As String
    Dim requete As String
    Dim enr As Recordset
    Dim base As Database
    cheminBd = ThisDocument.Path & "\origine1.accdb"
    Set base = DBEngine.OpenDatabase(cheminBd)
    Set enr = base.OpenRecordset("SELECT nom, prenom FROM t_client WHERE prenom like '*" & Me.TextBox4 & "*'", dbOpenDynaset)
    enr.MoveFirst
    Do
    ComboBox1.AddItem enr.Fields("prenom").Value
    enr.MoveNext
    Loop Until enr.EOF
    enr.Close
    base.Close
    Set enr = Nothing
    Set base = Nothing
    Mais il reste un problème, ma combobox1 n'affiche qu'une colonne au lieu de deux où je trouverai côte-à_côte "nom" et "prenom" ...

    J'avance doucement

  11. #11
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Voilà, si cela peut aider quelqu'un :

    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
    ComboBox1.Clear
    Dim cheminBd As String
    Dim requete As String
    Dim enr As Recordset
    Dim base As Database
    cheminBd = ThisDocument.Path & "\origine1.accdb"
    Set base = DBEngine.OpenDatabase(cheminBd)
    Set enr = base.OpenRecordset("SELECT nom, prenom FROM t_client WHERE prenom like '*" & Me.TextBox4 & "*'", dbOpenDynaset)
    enr.MoveFirst
    i = O
       With enr
     
     
          Do Until .EOF
             ComboBox1.AddItem (i)
             ComboBox1.Column(1, i) = .Fields("prenom")
             ComboBox1.Column(0, i) = .Fields("nom")
             .MoveNext
             i = i + 1
          Loop
     
       End With
     
     
    enr.Close
    base.Close
    Set enr = Nothing
    Set base = Nothing

  12. #12
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    re,
    et vous utilisez une combobox en lieu et place d'une listbox ?
    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
    Dim cheminBd As String
    Dim enr As Recordset
    Dim base As Database
    cheminBd = ThisDocument.Path & "\origine1.accdb"
    Set base = DBEngine.OpenDatabase(cheminBd)
    Set enr = base.OpenRecordset("SELECT nom, prenom FROM t_client WHERE prenom like '*" & Me.TextBox4 & "*'", dbOpenDynaset)
     
    With enr
        .MoveLast
        NoOfRecords = .RecordCount
        .MoveFirst
    End With
     
    With ListBox1
        .Clear
        .ColumnCount = rst.Fields.Count
        .Column = rst.GetRows(NoOfRecords)
    End With
    *
    enr.Close
    base.Close
    Set enr = Nothing
    Set base = Nothing

Discussions similaires

  1. [AC-2007] Champs multivalué dans un publipostage access word
    Par miamou dans le forum IHM
    Réponses: 1
    Dernier message: 10/12/2009, 11h14
  2. publipostage access / word
    Par gui-llaume dans le forum VBA Word
    Réponses: 35
    Dernier message: 23/10/2007, 17h03
  3. Publipostage Access Word
    Par Frenchguy dans le forum Access
    Réponses: 2
    Dernier message: 30/06/2007, 23h05
  4. Publipostage Access word (donnée requête)
    Par willytito dans le forum Access
    Réponses: 3
    Dernier message: 14/03/2007, 13h29
  5. publipostage access word
    Par imeys dans le forum Access
    Réponses: 5
    Dernier message: 14/02/2007, 10h26

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