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
16907
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 janvier 2021
10 126
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 63550 internautes nous ont dit merci ce mois-ci

Messages postés
16907
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 janvier 2021
10 126
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
16907
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 janvier 2021

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
16907
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 janvier 2021
10 126
Merci pour le retour... Tu trouveras plein d'exemples de codes pour Word sur mon site :
https://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