bonjour
je cherche à faire un publipostage Word à partir d'une base de données Excel
Mon fichier Word est déjà configuré avec champs de fusion adaptant le contenu du fichier selon les critères choisis.
j'utilise une macro VBA situé dans un module de mon fichier modèle word et la fonction mailmerge .wdsendtomail
j'ai deux questions :
1° Adapter l'objet du mail en fonction du nom de la personne (champs nom et prénom de la base)
dans mon code ci-dessous j'ai fait une boucle for next mais on doit pouvoir faire plus simple
2° adapter le nom de la pièce jointe pour qu'il inclut nom et prénom de la personne
ci-dessous le code, récupéré sur internet , et que j'ai commencé à adapter à mes besoins
d'avance merci à ceux qui pourront m'aider
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
45
46
47
48
49
50
51
52
53
54 Sub envoi() 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" Dim docWord As Word.Document Dim appWord As Word.Application Dim NomBase As String Dim ObjetMail As String Dim n As Integer 'NomBase = "C:\dossier\labase.xls" Application.ScreenUpdating = False Set appWord = Word.Application 'Set appWord = New Word.Application 'Ouverture du document principal Word Set docWord = ThisDocument 'fonctionnalité de publipostage pour le document spécifié For n = 1 To 1 With docWord.MailMerge 'Ouvre la base de données '.OpenDataSource Name:=NomBase, _ Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & NomBase & "; ReadOnly=True;", _ SQLStatement:="SELECT * FROM [Feuil1$]" 'Spécifie la fusion vers email .Destination = wdSendToEmail .SuppressBlankLines = True 'Prend en compte l'ensemble des enregistrements With .DataSource '.FirstRecord = wdDefaultFirstRecord '.LastRecord = wdDefaultLastRecord .FirstRecord = n .LastRecord = n .ActiveRecord = n End With ObjetMail = "Support entretien " & .DataSource.DataFields("Prénom") & " " & .DataSource.DataFields("Nom").Value .MailSubject = ObjetMail ' si true fichier en PJ, si false fichier dans corps message .MailAsAttachment = True 'Exécute l'opération de publipostage .Execute Pause:=False End With Next n Application.ScreenUpdating = True 'Fermeture du document Word 'docWord.Close False 'appWord.Quit End Sub
Partager