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 !

3 réponses

m@rina
Messages postés
17449
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
10 904
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

21 janv. 2016 à 23:12
Ah oui ! Ca marche !! Punaise ! Trop bien !
Bon, ok, j'ai quand même un message d'erreur :
Erreur d'execution '-2147467259(80004005)' :
Nom de fichier incorrect.

J'essaie de revoir un peu le code (que tu as rendu hyper light !).

En tt cas ça fonctionne ! Merci beaucoup M@rina ! Bravo !
0
m@rina
Messages postés
17449
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
10 904
21 janv. 2016 à 23:54
Bonjour,

"Nom de fichier incorrect"...
Il faut modifier le chemin que j'ai mis "M:\test\" et mettre le bon chemin.

m@rina
0
Klimero44
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

22 janv. 2016 à 11:01
J'avais déjà modifié l'adresse....
et je pense qu'il m'aurait dit "adresse incorrect" et non "fichier incorrect"

Je continue de chercher...
0
m@rina
Messages postés
17449
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
10 904
22 janv. 2016 à 18:52
Non, tu aurais bien Nom incorrect, car le chemin fait partie du nom. Peux tu donner ton code modifié ?
0
Klimero44
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

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
0