Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 

Staple1600

XLDnaute Barbatruc
Re

Bonsoir le fil, Lysaxel

Lysaxel

C'est ce que faisait la macro du message#11.
Comme le montre la copie d'écran du message#16, non ?
Test OK sur Word 2010 et Word 2013.
Tu l'avais testé en reproduisant ce qu'on voit sur l'image?
 

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.



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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…