Bonjour à tous,
J'ai une base de données Excel qui me sert à la création d'un publipostage.
Une fois le publipostage exécuté, je souhaite imprimer chaque page dans un pdf.
En faisant des recherches, je penses que la seule solution est de faire une routine VBA.
J'ai donc écrit le code suivant :
Jusque ici tout va bien, j'ai testé sur base de 10 lignes et ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub export_N_pdf() Dim objMailMerge As MailMerge Dim objDataSource As MailMergeDataSource Dim i As Integer, nbRecord As Integer Dim path As String, fileName As String Set objMailMerge = ThisDocument.MailMerge Set objDataSource = objMailMerge.DataSource path = "***Mon Chemin***" nbRecord = objMailMerge.DataSource.RecordCount For i = 1 To nbRecord objDataSource.FirstRecord = i objDataSource.LastRecord = i objDataSource.ActiveRecord = i objMailMerge.Destination = wdSendToNewDocument fileName = "Attestation_" & objDataSource.DataFields("IDENTIFIANT_PEE") objMailMerge.Execute ActiveDocument.ExportAsFixedFormat OutputFileName:=path & fileName & ".pdf", ExportFormat:=wdExportFormatPDF ActiveDocument.Close SaveChanges:=False Next i Set objMailMerge = Nothing Set objDataSource = Nothing End Sub
Par contre pour chaque ligne, un nouveau word est ouvert, enregistrer en pdf et fermé. Cela prend un peu de temps.
Ma base réelle fait 900 lignes, est-il possible de faire la même chose sans devoir créer un nouveau word temporairement ? J'ai peur quand lançant sur toute la base je rencontre un problème.
Qu'en pensez vous ?
Partager