Microsoft 365 fusion de document vba publipostage

Lysaxel

XLDnaute Nouveau
Bonjour j ai deux fichiers un Excel un word pour mettre en place un publipostage. Je souhaiterai automatiser la création et l enregistrement du document fusionné avec les données repris sous Excel en .pdf. Après la création des documents (un à un), je souhaiterai créer un macro qui me permette d envoyer automatiquement le document personnalisé à une personne désignée dans ce même fichier Excel en pièce jointe. J ai réussi à créer une macro mais qui envoie un document identique. Merci pour vos supers conseils.
 

Pièces jointes

  • TEST2.xlsm
    364 KB · Affichages: 25
  • publipostagebis.docm
    35.7 KB · Affichages: 23

Staple1600

XLDnaute Barbatruc
Re

Voila ce que donne chez moi le test
1) Base Excel
2) Document Word pour le publipostage
3) Résultat obtenu après exécution de la macro.
01Publi.jpg
 

Lysaxel

XLDnaute Nouveau
j'ai envisagé le problème sous un autre angle et j'ai reussi à produire tous mes documents en pdf. J'ai lancé une fusion général et trouver une macro pour créer un pdf pour chacun des pages du document word.

Sub ExportPDF()

Dim NbPage As Integer
Application.ScreenUpdating = False

NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count 'Compte le nombre de page dans le document

'Dans cette section, modifier le paramètre "OutputFileName" pour changer le répertoire de sortie.
'Il est important de laisser la variable I dans le nom du fichier pour garder un numéro de chrono.
For I = 1 To NbPage

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:chemin\Fiche n°" & I & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportFromTo, From:=I, To:=I, Item:= _
wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
Next

Application.ScreenUpdating = True

MsgBox "Export terminé"

End Sub
 

Lysaxel

XLDnaute Nouveau
hello Jm,
j'y suis presque grâce à la combinaison de tes idées et d'autres.
j'ai réussi à fusionner les données et produire un doc pdf par ligne de mon fichier excel
maintenant je souhaite envoyer chaque pièce jointe dont le chemin est indiqué dans une colonne mais il me met encore une erreur.
1582825482727.png


1582825631746.png


voici mon code:
Sub Envoimail3()

Dim sfichier As String
Dim omsgapp As Outlook.Application
Dim omsg As Outlook.MailItem
Dim ligne As Integer


For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Set omsgapp = New Outlook.Application
Set omsg = omsgapp.CreateItem(olMailItem)

With omsg
.To = Range("am" & ligne)
.Attachments.Add Range("an" & ligne)
.Subject = " organisation Customer service EXPORT "
.Body = " Bonjour," & Chr(10) & Chr(10) & "Nous avons le plaisir de vous presenter la nouvelle organisation du customer service , nous vous laissons la découvrir à la lecture de la pièce jointe." & Chr(10) & Chr(10) & "Le service client reste à votre disposition et vous souhaite une bonne journée." & Chr(10) & Chr(10) & "Le service client."
.Send
End With

Next

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Lysaxel

Lysaxel
Avant de te répondre, j'aimerais savoir si le code* que je t'ai proposé fonctionne chez toi?
(*celui du message#11)

Suggestion en passant
(Utilise les balises BBCODE [CODE=vb]Texte de la macro[/CODE]
Cela rendra tes messages plus agréable à lire ;)
VB:
Sub Envoimail3()
Dim sfichier As String
Dim omsgapp As Outlook.Application
Dim omsg As Outlook.MailItem
Dim ligne As Integer
For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Set omsgapp = New Outlook.Application
Set omsg = omsgapp.CreateItem(olMailItem)
With omsg
.To = Range("am" & ligne)
.Attachments.Add Range("an" & ligne)
.Subject = " organisation Customer service EXPORT "
.Body = " Bonjour," & Chr(10) & Chr(10) & "Nous avons le plaisir de vous presenter la nouvelle organisation du customer service , nous vous laissons la découvrir à la lecture de la pièce jointe." & Chr(10) & Chr(10) & "Le service client reste à votre disposition et vous souhaite une bonne journée." & Chr(10) & Chr(10) & "Le service client."
.Send
End With
Next
End Sub
 

Lysaxel

XLDnaute Nouveau
Merci merci!!!!!
ta macro fonctionnait sur mon poste à condition de reproduire exactement ton exercice. J avais un problème avec la destination.
je suis désolée si je n ai pas encore le bon « code » de conduite sur ce forum! Je vais apprendre!
j étais tellement obsédée par mon truc.
merci encore tes conseils et liens m ont mis sur les bonnes voies et avec de la persévérance on y arrive ! Merci
 

Staple1600

XLDnaute Barbatruc
Re

Merci pour le feedback. ;)
Normalement, il devrait fonctionner en faisant les adaptions nécessaires (en modifiant le noms des champs pour créer le nom du PDF)
Voici une version remaniée (avec des commentaires)
(Ca pourra toujours servir aux futurs lecteurs de ton fil ;))
VB:
Sub Export_Publipost_PDF_single()
Dim rep_PDF$, i&
'affichage boite dialogue pour choix dossier Export
'par défaut pointe sur le dossier du document Word contenant ce code VBA
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Choisir le dossier d'export PDF"
.InitialFileName = ActiveDocument.Path & "\"
If .Show Then rep_PDF = .SelectedItems(1) Else Exit Sub
End With
Application.ScreenUpdating = False
'-> la macro lance le publipostage
For i = 1 To ActiveDocument.MailMerge.DataSource.RecordCount
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
docname = .DataFields("NOM").Value & ".pdf"
'création du nom du fichier PDF basé sur le champ de fusion NOM
'-> adapter selon vos besoins, en remplaçant NOM par le champ idoine
End With
.Execute Pause:=False
End With
'->export en PDF unique pour chaque enregistrement dans la base
ActiveDocument.ExportAsFixedFormat OutputFileName:=rep_PDF & "\" & docname, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveWindow.Close False
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 717
Messages
2 112 169
Membres
111 449
dernier inscrit
jhugot