Publipostage Excel --> Word en VBA

Bonjour,

Je développe une application pour imprimer mes dossiers de façon automatique.

Mon problème sur l'application est le publipostage.

Mon Word a déjà les fusions, l'emplacement de mon Word sera toujours le même, par contre j'aimerai enregistrer mes dossiers sur le bureau (avant que je les classes manuellement).

Pouvez-vous m'aider s'il vous plait? (Et si possible encore un poils d'explication de la macro ça serait magnifique )

Merci par avance à tous!!

Bonsoir et bienvenue sur excel Pratique.

Pour mon avis personnel il serait mieux de créer ta macro avec l'enregistreur de macro et de la poster ici afin que les pro du vba puissent l’améliorer.

Bonjour, merci pour cette réponse.

Le problème c'est que l'enregistreur marco d'excel n'enristre pas ma macro publipostage. Du coup j'ai enregistrais une macro depuis Word, mais je souhaite lancer le publipostage depuis Excel...

Enregistrement de la macro :

ActiveDocument.MailMerge.MainDocumentType = wdFormLetters

ActiveDocument.MailMerge.OpenDataSource Name:= _

"D:\PI\Générateur de solution\Le générateur_Maquette(1).xlsm", _

ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _

AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _

WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _

Format:=wdOpenFormatAuto, Connection:= _

"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\PI\Générateur de solution\Le générateur_Maquette(1).xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OL" _

, SQLStatement:="SELECT * FROM `BD_PUBLIPOSTAGE$`", SQLStatement1:="", _

SubType:=wdMergeSubTypeAccess

With ActiveDocument.MailMerge

.Destination = wdSendToNewDocument

.SuppressBlankLines = True

With .DataSource

.FirstRecord = wdDefaultFirstRecord

.LastRecord = wdDefaultLastRecord

End With

.Execute Pause:=False

End With

Windows("Publipostage_Note technique.doc [Mode de compatibilité]"). _

Activate

En image cela donne ça :

etape 1 etape 2

Merci encore de votre réponse! C'est très gentil de votre part!!

Bonjour, il faudrait d’abord créer une base de données de contacts excel.(avec une colonne noms, une prénoms,une adresse etc)

Et le document word viendrais prendre les noms dans les champs spécifiés.

Désoler de ne pouvoir t'en dire plus car je vient moi aussi demander des conseil sur cette excellent site.

Bonsoir!

Merci pour cette réponse. Mes zones de fusions sont déjà insérées dans mon word. Mon publipostage marche bien mais depuis Word; or j'aimerai le lancer depuis Excel..

Merci encore!

Bonjour, et bonjour aussi aux lecteur, trice du forum.

Voila ce que j'ai trouvé pour ouvrir word :

Sub Ouv_Word()
    Set wrdApp = CreateObject("Word.Application")
        Set wrdDoc = wrdApp.Documents.Open("C:\Users\admin\Desktop\Dupont.doc")
    wrdApp.Visible = True
   End Sub

Ne pas oublier de mettre le bon chemin de ton fichier : C:\Users\admin\Desktop\Dupont.doc

A plus tard.

Bonjour à tous! Merci de m'avoir répondu, c'est très gentil.

Depuis j'ai bossé dans mon coin, en utilisant l'enregistreur de maccro et des parties de codes sur internet. Mais ma maccro ne marche toujours pas...

Sub Bouton8_Cliquer()

    Dim docWord As Word.Document
    Dim appWord As Word.Application
    Dim NomBase As String

    NomBase = "C:\Users\Vincent\PI\G←n←rateur de solution\Le g←n←rateur_Maquette(1).xlsm"

    Application.ScreenUpdating = False
    Set appWord = New Word.Application
    appWord.Visible = True
    'Ouverture du document principal Word
    Set docWord = appWord.Documents.Open("C:\Users\Vincent\PI\G←n←rateur de solution\Le g←n←rateur_Maquette(1).xlsm")

    'fonctionnalit← de publipostage pour le document sp←cifi←
    With docWord.mailMerge
        'Ouvre la base de donn←es
        .OpenDataSource Name:=NomBase, _
        Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & _
        "DBQ=" & NomBase & "; ReadOnly=True;", _
        SQLStatement:="SELECT * FROM BD_PUBLIPOSTAGE$"
        'sp←cifie la fusion vers Word
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
            'Prendre en compte l'ensemble des enregistrements
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            'Ex←cute l'op←ration de publipostage
            .Execute Pause:=False
    End With

    Application.ScreenUpdating = True

End Sub

Excel me dit qu'il y a une erreur sur les formules Word.Document et Word.Application...

Bonjour à tous,

Voilà une solution (non optimisée) mais au moins ça marche 8)

J'ai fait le publipostage en deux étapes

1) Depuis Excel --> Ouvrir le Word

2) Depuis Word --> Juste enregistré la macro par l'enregistreur

Sub Ouv_Word()

Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open("C:\Users\X\X\adresse du fichier\document.doc")
wrdApp.Visible = True

End Sub
Sub Publipostage()

    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\X\X\adresse du fichier\document.xlsm" _
        , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\X\X\adresse du fichier\document.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:En" _
        , SQLStatement:="SELECT * FROM ONGLET EXCEL$`", SQLStatement1:="", _
        SubType:=wdMergeSubTypeAccess
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
End Sub

Il faut changer dans la première macro l'adresse du document Word, afin de le trouver.

Puis dans la seconde, deux fois l'adresse du document excel et de l'onglet qu'on va utiliser pour publiposter les données

Voilà comment j'ai réussi...

Toutefois, si quelqu'un peut me donner la clé du publipostage en une fois... J'en serai très très heureux

Merci à tous et à Bruno9442

Re-bonjour à tous,

Mon code actuel était pas mal, mais les zones de fusion affiche toujours le même résultat, de plus je cherche encore un code correct pour mon publipostage, mais ça ne marche toujours pas

Voici le code que j'ai travaillé, mais ça ne donne rien.. Pouvez-vous m'aider??

 
Sub Bouton_Publipostage_to_Word()

'Dim appWord As Word.Application
    Dim docWord As New Word.Document
    Set docWord = GetObject("C:\Users\Vincent\CESI\PI\Générateur de solution\Logement\Publipostage_Logement.doc")
    Dim NomBase As String
    NomBase = "C:\Users\Vincent\CESI\PI\Générateur de solution\Le générateur_Maquette(1).xlsm"

    '  Lance Word
    'Set appWord = New Word.Application
    With docWord
        .Visible = True
    '  Ajoute un nouveau document
    Set docWord = .Documents.Add
        .Activate
    End With

    'fonctionnalité de publipostage pour le document spécifié
    With docWord.MailMerge
        'Ouvre la base de données
        .OpenDataSource Name:=NomBase, _
        Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & _
        "DBQ=" & NomBase & "; ReadOnly=True;", _
        SQLStatement:="SELECT * FROM BD_PUBLIPOSTAGE$"
        'spécifie la fusion vers Word
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
            'Prendre en compte l'ensemble des enregistrements
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            'Exécute l'opération de publipostage
            .Execute Pause:=False
    End With

End Sub
Rechercher des sujets similaires à "publipostage word vba"