Problème publipostage automatisé Word VBA - VB/VBA/VBS - Programmation
Marsh Posté le 04-10-2006 à 17:09:19
Je te conseille de regarder l'aide en ligne Word aux mots-clé suivants : MailMergeFields, AddAsk, AddFillIn
La méthode .Add appliquée à l'objet MailMergeFields semble répondre à ton attente, mais je n'en sais pas plus.
ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="MiddleInitial"
Marsh Posté le 04-10-2006 à 15:34:35
Bonjour, j'ai un petit problème avec une automatisation pour faire un publipostage automatisé sous Word.
J'ai 2 types de fichiers :
_1 fichier : création courrier.doc (qui contient la userform avec les champs a remplir et tout le code VBA)
_1 fichier : CSCNONV.doc (qui est un fichier qui contient des champs de publipostage sous la forme classique "NOM", "Prénom",... qui ont été créés à base d'un document Excel à la base, puis le document Word à été réattribué en Lettre classique non publipostée (d'ou la fonction MainDocumentType = wdFormLetters dans le code ci dessous)
J'ai créé une UserForm sous VBA Word qui contient plusieurs champs (NOM, Prénom, Adresse, etc...)
En bas de cette UserForm, j'ai inseré une bouton "Creer courrier"
Et la, le bas blaisse.. En effet, lorsque je veux publiposter, mon code ouvre donc le document qui contient les champs de publipostage, sans problème ca, mais le truc c'est que j'aimerai que ca soit ma UserForm, et donc ses propres champs (NOM, Prénom, etc...) qui puissent completer le publipostage du fichier ouvert.
Le problème est que je n'arrive pas à trouver le code qui permettrai de récuperer chaque champ de la UserForm pour les utiliser dans le publipostage de l'autre fichier à publiposter
Je vous pose la partie de code de mon bouton "Creer courrier"
Private Sub bouton_creer_Click()
Dim AppWord As Word.Application
Dim docWord As Word.Document
Set AppWord = New Word.Application
AppWord.Visible = True
'Présélection du courrier type à utiliser
If Reponse.ListIndex = 0 Then
Set docWord = AppWord.Documents.Open("""G:\RECRUTEMENT\publipostage\CSCNONV.doc""" )
ElseIf Reponse.ListIndex = 1 Then
Set docWord = AppWord.Documents.Open("""G:\RECRUTEMENT\publipostage\CSCNON.doc""" )
ElseIf Reponse.ListIndex = 2 Then
Set docWord = AppWord.Documents.Open("""G:\RECRUTEMENT\publipostage\CSCNONH.doc""" )
End If
'Définition du type de publipostage
AppWord.ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
'Partie manquante pour utiliser les champs pour publiposter
AppWord.ActiveDocument.MailMerge. ???????
'Execution du publipostage
AppWord.ActiveDocument.MailMerge.Execute
End Sub
J'ai essayé plusieurs type de syntaxe mais je n'arrive pas à trouver comment donner à word les champs à utiliser
Il y a bien une syntaxe du genre " AppWord.ActiveDocument.MailMerge.Fields.Item" mais ca ne fonctionne pas...
J'aurais grandement besoin d'aide pour me debloquer sur ce petit problème qui ma foi est assez ennuyeux, ou si quelqu'un à une autre idée pour faire ce principe de publipostage avec plusieurs courrier type, en utilisant les champs rempli dans le document original.
J'ai voulu essayer autrement, en passant par un fichier doc ou serait contenu les valeurs des champs, mais là, je n'arrive pas non plus à creer ce fichier correctement.. donc je ne sais plus quoi faire...
Merci par avance de votre aide
Xeno