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

  1. #1
    Débutant  
    probleme actualisation image apres publipostage
    bonjour

    je réalise un publipostage a partir d'access vers word mon 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
    DoCmd.SetWarnings False
     DoCmd.RunSQL "DELETE entreprise.* FROM entreprise IN 'C:\access_pc3d\publipostage.mdb';"
    DoCmd.RunSQL "INSERT INTO entreprise ( NUM_OPERATION, NOM_OPERATION, VILLE_OPERATION, DATE_CONTACT_DCE, NOM_ENTREPRISE, ADRESSE_ENTREPRISE, ADRESSEBIS_ENTREPRISE, VILLE_ENTREPRISE, CP_ENTREPRISE, NOM3D, ADRESSE3D, VILLE3D, CP3D, TEL3D, FAX3D, LOGO ) IN 'C:\access_pc3d\publipostage.mdb' SELECT OPERATION.NUM_OPERATION, OPERATION.NOM_OPERATION, OPERATION.VILLE_OPERATION, OPERATION.DATE_CONTACT_DCE, INTERVENANT_EXT.NOM_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSE_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSEBIS_NTERVENANT_EXT, INTERVENANT_EXT.VILLE_INTERVENANT_EXT, INTERVENANT_EXT.CP_INTERVENANT_EXT, SOCIETE.NOM3D, SOCIETE.ADRESSE3D, SOCIETE.VILLE3D, SOCIETE.CP3D, SOCIETE.TEL3D, SOCIETE.FAX3D, SOCIETE.LOGO FROM SOCIETE INNER JOIN (INTERVENANT_EXT INNER JOIN OPERATION ON INTERVENANT_EXT.NUM_INTERVENANT_EXT = OPERATION.NUM_INTERV_PROMOTEUR) ON SOCIETE.NUM_SOCIETE_3D = OPERATION.NUM_SOCIETE_3D WHERE (((OPERATION.NUM_OPERATION)=[Forms]![Fiche Contact DCE]![NUM_OPERATION]));"
    DoCmd.SetWarnings True
    ' Chemin d'accès au document Word de publipostage
    Const DOC_WORD = "C:\access_pc3d\doc\Lettre confirmation d'intêret.doc"
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Open DOC_WORD
        ' Lier la lettre type à la source de données Access
        .ActiveDocument.MailMerge.OpenDataSource _
            Name:="C:\access_pc3d\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
        .ActiveDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
        .ActiveDocument.MailMerge.Execute
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        .Documents.Open DOC_WORD
        .ActiveDocument.Close wdDoNotSaveChanges
        End With
    Set wdApp = Nothing
    Exit Sub


    ce code marche trés bien comme je le souhaite.

    Mon probléme est que dans le document word qui me sert pour le doc type pour le publipostage j'ai un champ qui m'ouvre un image qui peux varier.

    voila le code que j'ai place dans word
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    {includepicture {mergefield « logo »}}


    Mon probléme est que quand je change l'image elle ne change pas je suis oblige d'alle dans le type et de faire "ctrl" + A et enfin F9 alors je souhaite que sa soit automatique qui peux m'aide??

  2. #2
    Rédacteur/Modérateur

    Salut,

    Essaie avec un
    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 !

  3. #3
    Débutant  
    je ne maitrise pas bien word ou je doit mettre .Fields.Update???
    tu peux me donne la procédure stp

  4. #4
    Rédacteur/Modérateur

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
        .ActiveDocument.MailMerge.Execute
        .ActiveDocument.Fields.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 !

  5. #5
    Débutant  
    je suis desole mais je ne sais pas ou il faut rentre

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
        .ActiveDocument.MailMerge.Execute
        .ActiveDocument.Fields.Update


    tu peux me dire ou et comment stp??

  6. #6
    Expert éminent sénior
    Franchement...
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // cette ligne est dans ton code
        .ActiveDocument.MailMerge.Execute
    // Cette ligne doit être ajoutée après
        .ActiveDocument.Fields.Update

    Est-ce suffisamment clair ?

  7. #7
    Débutant  
    je l'avais deja essai mais sa marche pas je joint mon formulaire et mon doc word pour te montre a place l'ensemble dans c:\

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par popofpopof Voir le message
    je suis desole mais je ne sais pas ou il faut rentre

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
        .ActiveDocument.MailMerge.Execute
        .ActiveDocument.Fields.Update


    tu peux me dire ou et comment stp??
    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
     
    Private Sub lettreconfirmationinteret_Click()
    Dim DOC_WORD As String
    DOC_WORD = CurrentProject.Path & "\Lettre confirmation d'intêret.doc"
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Open DOC_WORD
        ' Lier la lettre type à la source de données Access
        .ActiveDocument.MailMerge.OpenDataSource _
            Name:=CurrentProject.Path & "\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
        .ActiveDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
    .ActiveDocument.MailMerge.Execute
    .ActiveDocument.Fields.Update
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        '.Documents.Open DOC_WORD
        '.ActiveDocument.Close wdDoNotSaveChanges
        End With
    wdApp.Visible = True
     
    Set wdApp = Nothing
    Exit Sub
    End Sub

    Juste un problème, tu dois avoir un mdw avec ton fichier !!
    Et il demande un mot de passe.
    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 !

  9. #9
    Débutant  
    alors j'ai une base de donne avec un fichier mdw ou l'on trouve 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    DoCmd.RunCommand acCmdRefresh
    DoCmd.SetWarnings False
     DoCmd.RunSQL "DELETE entreprise.* FROM entreprise IN 'C:\access_pc3d\publipostage.mdb';"
    DoCmd.RunSQL "INSERT INTO entreprise ( NUM_OPERATION, NOM_OPERATION, VILLE_OPERATION, DATE_CONTACT_DCE, NOM_ENTREPRISE, ADRESSE_ENTREPRISE, ADRESSEBIS_ENTREPRISE, VILLE_ENTREPRISE, CP_ENTREPRISE, NOM3D, ADRESSE3D, VILLE3D, CP3D, TEL3D, FAX3D, LOGO ) IN 'C:\access_pc3d\publipostage.mdb' SELECT OPERATION.NUM_OPERATION, OPERATION.NOM_OPERATION, OPERATION.VILLE_OPERATION, OPERATION.DATE_CONTACT_DCE, INTERVENANT_EXT.NOM_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSE_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSEBIS_NTERVENANT_EXT, INTERVENANT_EXT.VILLE_INTERVENANT_EXT, INTERVENANT_EXT.CP_INTERVENANT_EXT, SOCIETE.NOM3D, SOCIETE.ADRESSE3D, SOCIETE.VILLE3D, SOCIETE.CP3D, SOCIETE.TEL3D, SOCIETE.FAX3D, SOCIETE.LOGO FROM SOCIETE INNER JOIN (INTERVENANT_EXT INNER JOIN OPERATION ON INTERVENANT_EXT.NUM_INTERVENANT_EXT = OPERATION.NUM_INTERV_PROMOTEUR) ON SOCIETE.NUM_SOCIETE_3D = OPERATION.NUM_SOCIETE_3D WHERE (((OPERATION.NUM_OPERATION)=[Forms]![Fiche Contact DCE]![NUM_OPERATION]));"
    DoCmd.SetWarnings True
    ' Chemin d'accès au document Word de publipostage
    Const DOC_WORD = "C:\access_pc3d\doc\Lettre confirmation d'intêret.doc"
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Open DOC_WORD
        ' Lier la lettre type à la source de données Access
        .ActiveDocument.MailMerge.OpenDataSource _
            Name:=CurrentProject.Path & "\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
        .ActiveDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
    .ActiveDocument.MailMerge.Execute
    .ActiveDocument.Fields.Update
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        '.Documents.Open DOC_WORD
        '.ActiveDocument.Close wdDoNotSaveChanges
        End With
    wdApp.Visible = True
     
    Set wdApp = Nothing
    Exit Sub


    donc on copier les donnes dans une base non sécurisé "publipostage" et ensuite grace au code il m'ouvre le fichier type et réalise le publipostage.

    je peux faire quoi pour pour les l'image se mette a jour au publipostage?

  10. #10
    Rédacteur/Modérateur

    Tu as problème au niveau du chemin de l'image, elle doit être entre ".

    en plus, je ne comprend pas très bien ta manœuvre !!

    Pourquoi utilises-tu un document en guise de modèle alors que les modèles sont faits pour çà ?

    Ajoute ceci derrière ton End With
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Selection.WholeStory
        Selection.Fields.Update
        Selection.Fields.ToggleShowCodes
    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
    Débutant  
    alors j"utilise mon document en guise de modele car les utilisateurs final ne doive pas avoir acces au code de programmation ni de publipostage pour ne rien changer. et en plus comme sa quand ils fermeront le nouveau document crée on leur proposera d'enregistre le fichier et cela sens modifier l'original.

    Pour ce que tu vien de donne
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.WholeStory
        Selection.Fields.Update
        Selection.Fields.ToggleShowCodes


    j'ai fait comme tu ma dis
    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
    ' Chemin d'accès au document Word de publipostage
    Const DOC_WORD = "C:\access_pc3d\doc\Lettre confirmation d'intêret.doc"
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Open DOC_WORD
        ' Lier la lettre type à la source de données Access
        .ActiveDocument.MailMerge.OpenDataSource _
            Name:="C:\access_pc3d\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
        .ActiveDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
    .ActiveDocument.MailMerge.Execute
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        .Documents.Open DOC_WORD
        .ActiveDocument.Close wdDoNotSaveChanges
        End With
            Selection.WholeStory
        Selection.Fields.Update
        Selection.Fields.ToggleShowCodes
    Set wdApp = Nothing
    Exit Sub


    mais il me dis "objet requis" erreur d'éxécution 424 et il me souligne "Selection.WholeStory"

  12. #12
    Rédacteur/Modérateur

    En fait pour avoir plus facile et pouvoir utiliser tous les objets de Word, je déclare la bibliothèque Word et fais référence à cette bicliothèque.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    Dim wApp As Word.Application
     
    Set wApp = New Word.Application


    Ensuite, tu as l'intellisense pour t'aider à l'écriture du code.

    Pour ce qui est de ne pas pouvoir modifier l'original, c'est le but des modèles. Et le code n'est pas sauvegardé dans le document issu du modèle.
    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 !

  13. #13
    Débutant  
    J'ai oublie de te précisé une chose la base que je construi va etre utilisé sur environ 30 ordinateur avec différente version du pack office et donc de word avec comme version 2007 2003 xp et peux être même plus vieux donc si je utiliser la bibliothèque Word je vai avoir des probléme non?? je réalise la mise a jour de ma base par un systeme automatisé.

  14. #14
    Rédacteur/Modérateur

    Pour le système automatisé, c'est pas un soucis, par contre si les version de Word diffèrent, alors il faut utiliser le latebinding.


    ce soir il se fait tard, je regarderai demain pou voir comme utiliser l'objet sélection dans ton cas.
    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 !

  15. #15
    Débutant  
    merci bcp pour ton aide alors a demain

  16. #16
    Rédacteur/Modérateur

    Après quelques essais.



    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
     
    Private Sub lettreconfirmationinteret_Click()
    Dim DOC_WORD As String
    Dim oDoc As Object
    DOC_WORD = CurrentProject.Path & "\Lettre confirmation d'intêret.dot"
    Dim oSel As Object
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Add (DOC_WORD)
        ' Lier la lettre type à la source de données Access
        .activeDocument.MailMerge.OpenDataSource _
            Name:=CurrentProject.Path & "\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
         .activeDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
        .activeDocument.MailMerge.Execute
        Set oDoc = wdApp.activeDocument
        .activeDocument.Fields.Update
     
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        '.Documents.Open DOC_WORD
        '.ActiveDocument.Close wdDoNotSaveChanges
        End With
        Debug.Print oDoc.Name
        oDoc.Activate
     
        Set oSel = oDoc.content
        With oSel
            .Fields.Update
            .Fields.ToggleShowCodes
        End With
     
    wdApp.Visible = True
     
    'Set wdApp = Nothing
    Exit Sub
    End Sub
    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 !

  17. #17
    Débutant  
    j'ai essai ton code et sa me marque :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    erreur d'exécution 5151 word n'a pas pu lire ce docuemnt. il est peut être corrompu.
    Essayer l'une ou plusieurs des opérations suivantes:
    ouvrez et réparez le fichier
    ouvrez le fichier avec le convertisseur récupération de texte


    et sa me souligne ".Documents.Add (DOC_WORD)"

  18. #18
    Rédacteur/Modérateur

    Le document doit porter l'extension .dot
    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 !

  19. #19
    Débutant  
    ok pour le .dot
    mais sa m'ouvre un fichier word document1 avec ma lettre avec les champ en visuelle et un nouveau fichier word lettres types1 avec le codes des champ

    et sa ne me mais pas a jour l'image

  20. #20
    Rédacteur/Modérateur

    J'ai mis le code parce que chez moi ça fonctionne !

    J'ai une question, pourquoi ajoutes-tu la source de données au document en code et pas dans le document en document principal de fusion ?
    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 !