Publipostage Word en PDF avec base de données Excel

Résolu
Klimero44 Messages postés 15 Statut Membre -  
J.WALLE Messages postés 3 Statut Membre -
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

  1. m@rina Messages postés 27560 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    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
    1. Klimero44 Messages postés 15 Statut Membre 3
       
      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
    2. Klimero44 Messages postés 15 Statut Membre 3 > m@rina Messages postés 27560 Date d'inscription   Statut Modérateur Dernière intervention  
       
      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