Fusion publipostage

Bonjour à vous,

J'ai un petit problème de codage qui me prends la tête concernant le publipostage, je m'explique.

Pour l'instant le code suivant marche mais je ne trouve pas la suite :

Sub puplipostage()
    Dim WApp As Object, WDoc As Object
    Dim NomBase As String

    NomBase = "C:\Users\******\Desktop\test 1.xlsm"

    Set WApp = CreateObject("Word.application")
    WApp.Visible = True
           Application.ScreenUpdating = False

    'Ouverture du document principal Word
    Set WDoc = WApp.Documents.Open("C:\Users\*******\Desktop\test d.docx")

    'fonctionnalité de publipostage pour le document spécifié
    With WDoc.MailMerge
        'Ouvre la base de données
            .OpenDataSource Name:=NomBase, SQLStatement:="SELECT * FROM [Feuil1$]"

    End With

    Application.ScreenUpdating = True

    'Fermeture du document Word
    WDoc.Close False

    WApp.Quit
End Sub

après la ligne :

            .OpenDataSource Name:=NomBase, SQLStatement:="SELECT * FROM [Feuil1$]"
            

je souhaite effectuer la commande "insérer un champ de fusion" sur le fichier word ouvert,

et je souhaite également "mettre à jour les étiquettes" afin que tout les nom soit copier.

Bien évidement j'ai testé d’enregistrer la macro mais lorsque je fais un copier coller du vba word au vba excel cela ne marche plus pour le 1er soucis.

pour le 2ème soucis si je relance le code dans Word la commande n'est pas enregistré.

Si quelqu'un peut me filer un petit coup de pouce ça serait pas mal.

merci d'avance.

Ps : voici le code enregistré sur Word

Sub Macro2()
'
' Macro2 Macro
'
'
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\sinquina\Desktop\test 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=C:\Users\sinquina\Desktop\test 1.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking M" _
        , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="NOM"
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    ActiveWindow.ActivePane.VerticalPercentScrolled = 0
End Sub

Bonjour

personnellement quand je fais un publipostage par vba, le document word modèle possède déjà tous les champs au bon endroit dans le document.... ainsi quand je fais un publipostage (comme tu le ferais à la main) tous les champs se mettent a jour....

je n'ai jamais essayé d’insérer un champ par VBA dans un doc word... car il faudrait pouvoir se positionner dans la feuille.... et je ne suis pas sur que cela soit possible....

Fred

Salut,

merci de ta réponse.

le fichier Word est déjà mis en page, la forme des étiquettes sont déjà mise il s'agit juste de la fusion des données qui bloque.

Bonjour à tous,

Pour faire un publipostage depuis excel, voici un extrait de code fonctionnel (issu d'une de mes appli) :

    With WDoc.mailMerge
        .OpenDataSource Name:=NomBase, Connection:="Driver={Microsoft Excel Driver (*.xls, *.xlsm)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Feuil1$]"
        '.Destination = wdSendToPrinter 'Si besoin de fusion vers l'imprimante
        .suppressBlankLines = True
        With .DataSource
            .firstRecord = wdDefaultFirstRecord
            .lastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False 'Exécute l'opération de publipostage
    End With
    WDoc.Application.ActiveDocument.SaveAs "C:\chemin\nom_du_fichier.docx"

La dernière ligne enregistre le résultat de la fusion dans un nouveau fichier

Est-ce que ça répond à la question?

Pierre

Merci de ta réponse.

Je vais essayer de tester ça aujourd'hui mais je ne te promets rien.

edit : testé mais désolé ça ne m'aide pas plus.

j'ai déjà trouvé ce code mais il n’exécute pas ce que je souhaite.

Car je ne souhaite pas enregistrer le fichier juste imprimer et garder le fichier original.

Merci quand même

Bon merci pour l'aide,

Du coup je laisse tomber. Je laisserai les gens utiliser Word avec un msgbox comprenant les étapes à suivre.

Rechercher des sujets similaires à "fusion publipostage"