Insertion champ de fusion depuis VBA Excel

Bonjour tout le monde!

Après plusieurs recherches sur le forum pour trouver la solution à mon problème, je reste toujours coincé.

En tant que super novice, je voulais savoir si quelqu'un pouvait m'aider sur une question de publipostage a partir de VBA excel. Enfin c'est plus un probleme dans la rédaction du code qu'autre chose je pense.

A partir de VBA Excel ,j'aimerais faire un publipostage à partir de VBA Excel soit : executer word, créer un nouveau document, connecter mon fichier excel à mon document, insérer un signet (Signet1) et ensuite insérer un champ de fusion (Nom) à l'endroit ou se trouve mon signet.

J'ai presque terminé mon code SAUF l'insertion du champ de fusion à la place du signet. J'ai trouvé un code qui pourrait correspondre à ce que je recherche mais je n'arrive pas à l'appliquer à mon cas :

       ActiveDocument.Fields.Add Range:=Bookmarks(1).Range, Type:=wdFieldMergeField, Text:="""Nom"""

Lorsque je l'execute j'ai l'erreur "Compile error : Sub or Function not defined"

Si quelqu'un comprend mon erreur, je suis preneur de l'explication .

Merci d'avance pour votre aide

Bonne journée

Ci-dessous mon fameux code :

Sub test()

Dim WordApp As Object, WordDoc As Object

Set WordApp = CreateObject("Word.Application") 'ouverture session word
WordApp.Visible = True 'word visible

Set WordDoc = WordApp.Documents.Add  'création nouveau document Word

With WordDoc
'publipostage
With WordDoc.MailMerge
 .MainDocumentType = wdLetters
 .OpenDataSource Name:="C:\Users\xvr\Desktop\data.xlsx", _
 ReadOnly:=True, _
 Connection:="Sheet1", _
 SQLStatement:="SELECT * FROM [Sheet1$]" 'sélection de la feuille Sheet1 pour les champs de fusion
End With

'Ajoute un signet1
        .Paragraphs.Add
        With .Paragraphs(.Paragraphs.Count - 1)
            .Range.Font.Bold = False
            .Range.Font.Underline = False
            .Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
            Set Rng = WordDoc.Range(Start:=.Range.Start, End:=.Range.Start)
        End With
        .Bookmarks.Add Range:=Rng, Name:="Signet1"

'insertion champ de fusion "Nom" sur Signet1
         ActiveDocument.Fields.Add Range:=Bookmarks("Signet1").Range, Type:=wdFieldMergeField, Text:="""nom"""

End With

End Sub

Bonjour,

Je ne comprends pas votre démarche.

Pour faire du publipostage, on part d'un document Word modèle où l'on y définit les champs de fusion :

menu Insertion --> Groupe Zone de texte --> Bouton Composants Quick Part --> Champ --> ChampFusion

puis on alimente ces champs de fusion à partir des données du classeur Excel.

Et pas l'inverse car a priori vous partez d'un classeur Excel pour créer votre document Word.

Bonsoir thev,

Oui ma demande peut paraitre bizarre..

En fait j'ai un tableau excel et je voulais générer plusieurs courriers dans lequel il y aurait 2 champs de fusion.

Vu que je suis en train d'apprendre a utiliser VBA, je voulais voir si on pouvait générer directement le doc Word depuis excel et faire un publipostage simple et donc sans avoir à créer préalabement son document word. Et je suis tout a fait conscient que c'est plus rapide en publipostage classique.

Au final j'ai trouvé la réponse sur un forum anglais. J'ai remplacé ma dernière ligne par le code ci-dessous et ça fonctionne donc problème (idiot) résolu

 ActiveDocument.Bookmarks("Signet1").Range.Field s.Add ActiveDocument.Bookmarks("Signet1").Range, wdFieldMergeField, "nom"

Et merci thev de t'être penché sur la question

Bonne soirée

Rechercher des sujets similaires à "insertion champ fusion vba"