Publipostage Word en PDF avec base de données Excel

Résolu/Fermé
Klimero44 Messages postés 15 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 4 janvier 2017 - 4 déc. 2015 à 10:27
J.WALLE Messages postés 2 Date d'inscription samedi 9 juillet 2016 Statut Membre Dernière intervention 9 juillet 2016 - 9 juil. 2016 à 21:53
Bonjour,

J'ai un publipostage Word avec une base de données Excel.

Le but est de générer autant de fichier PDF par page Word (en gros 500 pages de publipo à générer en 500 fichiers PDF).

Le but est d'envoyer par mail par destinataire un fichier PDF.

J'ai repris le code VBA :

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:\Users\xxx\Desktop\Publipostage\03122015\test\" & 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

Cela fonctionne à merveille.

Seulement, il ressort 1.pdf, 2.pdf, etc....

Difficile de retrouver ses petits pour les envois PDF en PJ !

L'idée est d'intégrer à la place des chiffres le n°contrat + Nom du client (qu'on retrouve dans la base Excel)

Quelqu'un aurait une idée ?

Merci d'avance !

A voir également:

3 réponses

m@rina Messages postés 20011 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 16 avril 2024 11 268
20 janv. 2016 à 13:27
Bonjour,

Ce n'est pas très compliqué à condition que le texte qui va servir aux noms des documents soit toujours au même endroit. A partir de là, on compte les paragraphes, les mots, etc.

Voici un exemple de macro :

Sub exportpdf()
'macro écrite par m@rina
Dim nbpage As Integer
Dim nom As String

nbpage = ActiveDocument.Sections.Count

For i = 1 To nbpage
nom = ActiveDocument.Range.Sections(i).Range.Paragraphs(1).Range.Words(2)
ActiveDocument.ExportAsFixedFormat outputFileName:="M:\test\" & nom & ".pdf", _
exportFormat:=wdExportFormatPDF, Range:=wdExportFromTo, From:=i, To:=i
Next
MsgBox "Export terminé"
End Sub


Cet exemple récupère le deuxième mot du premier paragraphe de chaque section. A toi de bien compter ! ;)

m@rina
2
Klimero44 Messages postés 15 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 4 janvier 2017 3
22 janv. 2016 à 22:42
Voici le code :

Sub exportpdf()
'macro écrite par m@rina
Dim nbpage As Integer
Dim nom As String

nbpage = ActiveDocument.Sections.Count

For i = 1 To nbpage
nom = ActiveDocument.Range.Sections(i).Range.Paragraphs(1).Range.Words(1)
ActiveDocument.ExportAsFixedFormat outputFileName:="C:\Users\Desktop\pj\" & nom & ".pdf", _
exportFormat:=wdExportFormatPDF, Range:=wdExportFromTo, From:=i, To:=i
Next
MsgBox "Export terminé"
End Sub
1
Klimero44 Messages postés 15 Date d'inscription jeudi 3 décembre 2015 Statut Membre Dernière intervention 4 janvier 2017 3 > m@rina Messages postés 20011 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 16 avril 2024
Modifié par Klimero44 le 23/01/2016 à 11:23
Génial M@rina ! Ca fonctionne ! Plus de message d'erreur ! :-)
Grand merci à toi ! Bravo !
Je vais quand même continuer à potasser Visual Basic pour m'améliorer ! :-)
1