Publipostage Word en PDF avec base de données Excel [Résolu/Fermé]

Signaler
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017
-
Messages postés
2
Date d'inscription
samedi 9 juillet 2016
Statut
Membre
Dernière intervention
9 juillet 2016
-
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

Messages postés
16238
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020
9 537
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63840 internautes nous ont dit merci ce mois-ci

Messages postés
16238
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020
9 537
Bonsoir,

C'est ça : "C:\Users\Desktop\pj\"
qui n'est pas bon...

Si tu tiens à choisir le dossier qui est sur le bureau, tu dois mettre ton nom d''utilisateur Windows, par exemple :
"C:\Users\klimero\Desktop\pj\"


m@rina
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017
>
Messages postés
16238
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020

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 ! :-)
Messages postés
16238
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020
9 537
Merci pour le retour... Tu trouveras plein d'exemples de codes pour Word sur mon site :
http://faqword.com/index.php/component/tags/tag/6-vba-word
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

Figure toi que je connais ton site et bravo pour le boulot !
J'y vais de temps en temps lorsque je cherche quelques macros !
Encore bravo !
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

Bouh ouh.... Ouin.....
J'arrive au boulot, je copie/colle ta macro et modifie l'adresse :
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:\publipo\" & nom & ".pdf", _
exportFormat:=wdExportFormatPDF, Range:=wdExportFromTo, From:=i, To:=i
Next
MsgBox "Export terminé"
End Sub


et voilà qu'il me redit "nom de fichier incorrect" !!

Grrrr......

Puis-je te redemander un coup de main ? Je ne vois pas où est l'erreur.... :'-(
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

Bonjour,

Je continue à me creuser la tête pour mon problème.

Du coup, je me pose la question :
Si j'intègre le n° du contrat et le nom du client en bas de page, puis-je créer un code vba qui va chercher ses éléments et changer les chiffres 1.pdf en n°de contrat+nom d'entreprise.pdf ?

Je vous remercie d'avance.

Kli
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017

Tant pis ! Je m'acharne quand même !

Je me demandais si je peux demander à Word de prendre les 2 premiers mots de mon en-tête de page c'est-à-dire "N°contrat Nom Societe".
Le code serait un truc du genre :

For i = 1 To SelectDocument.Words(2).Select


Qu'en pensez-vous ?

Je commence à sécher et à devenir chauve à force de me tirer les cheveux !
Salut Klimero44,
J'ai exactement le même problème que toi.
As-pu améliorer ton code pour voir apparaitre le n°de client dans le nom du fichier client ?
Merci d'avance,
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017
> Dio
Non, j'ai mis le code de côté....
Du coup je me suis lancé dans la bible du VBA !
Messages postés
15
Date d'inscription
jeudi 3 décembre 2015
Statut
Membre
Dernière intervention
4 janvier 2017
> Dio
Salut Dio,

As-tu réussi aussi (voir le code en haut) ?
Messages postés
2
Date d'inscription
samedi 9 juillet 2016
Statut
Membre
Dernière intervention
9 juillet 2016

Bonjour, Bonsoir ...

Regarde cette vidéo ... https://www.youtube.com/watch?v=bglUfRd2JhY