Publipostage en pdf avec VBA Excel

Bonjour,

J'ai créé une VBA afin d'automatiser un processus de Publipostage. Je me retrouve face à deux problèmes:

- Lorsque je lance la VBA, Word bloque car il attend une réponse au message suivant : "L'ouverture de ce document éxecute la commande SQL suivante : SELECT*FROM 'BASE DE DONEE PUBLIPOSTAGE$' Des données de votre base de données seront insérées dans le document Voulez-vous continuer?"

Si je ne réponds pas, Excel me renvoie une boite de dialogue m'indiquant qu'il attend une réponse d'une action OLE ("Microsoft Excel attend la fin de l'exécution d'une action OLE d'une autre application");

- Une fois que je valide manuellement la requête, deux documents sont générés. Un intitulé "Lettre 1 type" qui présente un document tel qu'attendu et un document intitulé "Document 1" qui est vierge.

Ainsi, mes problèmes sont la boite de dialogue requête SQL et le document 1 que j'aimerais ne plus voir apparaitre.

Je souhaiterais également enregistré, dans un dossier spécifié, la "lettre type 1" en format PDF sous un nom de document sous le format - Prélèvement en date du "date" sur chantier "numéro de chantier" - (par ex: Prélèvement en date du 061219 sur chantier n°19-186) en fichier PDF

Ne sachant pas comment faire, si quelqu'un a des idées à me proposer, je suis preneur

merci d'avance.

Karim

Bonjour Krimo48 et

Je ne comprendrais jamais pourquoi les gens comme toi veulent partir d'Excel avec du VBA pour faire un publipostage

Un publipostage se fait de Word en liant une source de données qui est en général un fichier Excel.

Cela t'éviterais tous ces problèmes

Certes, cela m'éviterait beaucoup de problème mais ce publipostage fait parti d'un tout construit sous Excel (Formulaire -> Base de données -> Publipostage). Une fois que j'aurai la formule magique, je l'intégrerai au bouton "valider/enregistrer" du formulaire afin que cette étape valide l'enregistrement dans la base de donnée et déclenche l'impression en PDF du document correspondant. Les gens comme moi sont un peu complexes je l'admets mais ne sont pas dans le jugement. Une solution serait la bienvenue, je connais déjà les problèmes

Ceci dit, j'ai un peu avancé.

Si quelqu'un pouvait m'aider sur la façon de nommer le fichier, ça m'enlèverait une grosse épine du pied

Mon code VBA mis à jour:

Sub Publipostage()

'Enregistre le fichier au format.pdf

'N?cessite d'activer la r?f?rence "Microsoft Word xx.x Object Library"

Dim docWord As Word.Document

Dim appWord As Word.Application

Dim NomBase As String

NomBase = ThisWorkbook.FullName

Application.ScreenUpdating = False

Set appWord = New Word.Application

appWord.Visible = True

'Ouverture du document principal Word

Set docWord = appWord.Documents.Open("C:\Users\PC\Desktop\ProjetPublipostage\VI\PUBLIPOSTAGE RAPPORT V3.docx")

'fonctionnalit? de publipostage pour le document sp?cifi?

With docWord.MailMerge

'Ouvre la base de donn?es

.OpenDataSource Name:=NomBase, _

Connection:="Driver={Microsoft Excel Driver (*.xlsx)};" & _

"DBQ=" & NomBase & "; ReadOnly=True;", _

SQLStatement:="SELECT * FROM [BASE DE DONNEE PUBLIPOSTAGE$]"

With .DataSource

.FirstRecord = 1

.LastRecord = 1

End With

'Ex?cute l'op?ration de publipostage

.Execute

End With

' Sauvegarde du document publipost?

With appWord.ActiveDocument

.ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & "New_name" & ".pdf", ExportFormat:= _

wdExportFormatPDF, OpenAfterExport:=False

End With

Application.ScreenUpdating = True

'Fermeture du document Word

docWord.Close False

appWord.ActiveDocument.Close False

appWord.Quit

End Sub

Pour l'instant le hic se trouve ici:

With appWord.ActiveDocument

.ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & "New_name" & ".pdf", ExportFormat:= _

Où il doit y avoir une ligne qui manque pour appeler le fichier Excel en cours et appeler les données de cellules AE2 et A2. Ainsi, New_name serait égale à "Prèlevement n°" & "Range("A2").Value" & "effectué en date du " & "Range (AE2).Value"

Mais si je rentre la formule tel qu'elle, vu que je commence avec "With appWord.ActiveDocument", le VBA ne trouve pas la référence (la feuille excel)

Une idée?

Merci d'avance.

J'ai mis à jour ma VBA en suivant l'idée que j'avais dans mon précédent message en présentant la chose comme suit :

New_name = "Prélèvement n° " & Range("B2").Value & " effectué en date du " & Range("AE2") & " sur chantier n? " & Range("A2").Value

With appWord.ActiveDocument

.ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & New_name & ".pdf", ExportFormat:= _

wdExportFormatPDF, OpenAfterExport:=False

End With

Cependant ça bug en surlignant cette partie:

.ExportAsFixedFormat OutputFileName:="C:\Users\PC\Desktop\ProjetPublipostage\VI\" & New_name & ".pdf", ExportFormat:= _

wdExportFormatPDF, OpenAfterExport:=False

Et en indiquant dans le message de la boite de dialogue :

"Erreur d'exécution '-2147467259 (80004005)

Le nom du dossier est incorrect"

Quelqu'un pourrait m'aider ?

Je joins les fichiers concerné

Merci d'avance.

Finalement j'ai trouvé la solution

Rechercher des sujets similaires à "publipostage pdf vba"