Microsoft 365 Impression PDF d'un Word via une macro Excel

Celesteb

XLDnaute Nouveau
Bonjour à tous,

J'ai un fichier Excel qui doit alimenter un Word (contrat) par publipostage. De mon fichier Excel, je souhaite une macro qui permet par un bouton : d'ouvrir le Word, Publipostage à jour et s'enregistre en PDF à un lieu précis.

J'ai un code erreur qui s'affiche : Erreur d'exécution "91" : variable objet ou variable bloc with non définie

Voici mon code

Sub Fusion_Publipostage()
Dim wordDoc As Word.Document
Dim wordApp As Word.Application
Dim Nombase As String

Nombase = "T:\Céleste\Fiche client\Fiche client comp.xlsm"

Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = True
Set wordDoc = appWord.Documents.Open("T:\Céleste\Fiche client\CG FOURNITURE DE GAZ IND.docx")

With wordDoc.MailMerge
'La base Excel est dans le même répertoire que le doc Word.
'Les données sont dans la feuille nommée Pour publi condi.
.OpenDataSource Name:=Nombase, _
Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & _
"DBQ=" & Nombase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [Pour publi Condi$]"

.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = 2
End With
.SuppressBlankLines = True
.Execute Pause:=False
End With

DoEvents
Set WdLType = wordApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...)
'WdLType.PrintOut
'WdLType.SaveAs Filename:=" T:\Céleste\Fiche client\Contrat client.PDF" ' ^^^ !
DoEvents
WdLType.Close False
DoEvents
WdDoc.Close False
DoEvents
wordApp.Quit

Set WdLType = Nothing
Set WdDoc = Nothing
Set wordApp = Nothing
End Sub

Le problème semble être sur cette ligne :

Set WdLType = wordApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...)

Pouvez-vous m'aider?

Merci par avance.
 

Celesteb

XLDnaute Nouveau
Mon fichier Excel doit être complété par nos commerciaux pour alimenter automatiquement différents documents, y compris le Word qui est le contrat client. Nous ne voulons pas qu'ils ouvrent eux-mêmes le Word car ils ne sont pas très doués (encore moins que moi) et limiter les risque de modification sur le Word. Du coup, nous voulons qu'à partir de l'Excel (onglet de saisie), nous ayons un bouton qui lance le document Word et l'enregistre en PDF une fois le publipostage fait. La première partie de mon code fonctionne mais bloque au moment ou il doit s'enregistrer en PDF.
 

Celesteb

XLDnaute Nouveau
re
bonjour je pige pas tres bien
c'est wordDoc que tu devrais utiliser pour imprimer non?
wordDoc.printout
Mon fichier Excel doit être complété par nos commerciaux pour alimenter automatiquement différents documents, y compris le Word qui est le contrat client. Nous ne voulons pas qu'ils ouvrent eux-mêmes le Word car ils ne sont pas très doués (encore moins que moi) et limiter les risque de modification sur le Word. Du coup, nous voulons qu'à partir de l'Excel (onglet de saisie), nous ayons un bouton qui lance le document Word et l'enregistre en PDF une fois le publipostage fait. La première partie de mon code fonctionne mais bloque au moment ou il doit s'enregistrer en PDF.
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Je ne comprends pas trop car cette macro est vraiment évidente :
VB:
Sub Word_PDF()
Dim Wapp As Object, fichier$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
On Error GoTo 0
If Wapp Is Nothing Then MsgBox "Ouvrez le document Word...": Exit Sub
fichier = ThisWorkbook.Path & "\Word_PDF.pdf"
Wapp.ActiveDocument.ExportAsFixedFormat fichier, 17
MsgBox "Le fichier '" & fichier & "' a été créé..."
End Sub
Elle doit être dans un fichier Excel enregistré sur disque dur.

A+
 

Celesteb

XLDnaute Nouveau
Bonjour à tous,

Je ne comprends pas trop car cette macro est vraiment évidente :
VB:
Sub Word_PDF()
Dim Wapp As Object, fichier$
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
On Error GoTo 0
If Wapp Is Nothing Then MsgBox "Ouvrez le document Word...": Exit Sub
fichier = ThisWorkbook.Path & "\Word_PDF.pdf"
Wapp.ActiveDocument.ExportAsFixedFormat fichier, 17
MsgBox "Le fichier '" & fichier & "' a été créé..."
End Sub
Elle doit être dans un fichier Excel enregistré sur disque dur.

A+
Bonjour, c'est ma première création de macro donc je n'y connais vraiment rien. j'ai essayé de coller votre macro à la place de la mienne mais cela ne fonctionne pas. Mon Word est au même endroit que le fichier Excel.
 

Celesteb

XLDnaute Nouveau
Bonjour,

Il suffit d'ouvrir le document Word puis le fichier Excel et d'exécuter la macro.

A+
Mais la demande de ma direction c'est que les commerciaux n'est pas à ouvrir le document Word. Il doit y avoir sur Excel un bouton rattaché à une macro, qui une fois lancé, ouvre le word pour que le publipostage se face, que le document s'enregistre en PDF à un emplacement précis et le word se ferme sans qu'aucune autre intervention ne soit à faire
 

Celesteb

XLDnaute Nouveau
Le sujet de ce fil c'est la création du fichier PDF non ?

Le document Word étant ouvert quand vous faites le publipostage, c'est à ce moment-là que vous exécuterez la macro pour créer le fichier PDF.
Ma macro ouvre le document word pour que le publipostage ce fasse mais le bug arrive à ce nivau :
Set WdLType = wordApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...)

C'est cette partie qui bloque pour la création du PDF
 

job75

XLDnaute Barbatruc
Eh bien dans votre macro testez en remplaçant :
VB:
DoEvents
Set WdLType = wordApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...)
'WdLType.PrintOut
'WdLType.SaveAs Filename:=" T:\Céleste\Fiche client\Contrat client.PDF" ' ^^^ !
DoEvents
WdLType.Close False
DoEvents
par :
VB:
Word_PDF
ma macro étant placée dans le même module VBA.

PS : ceci est mon 40000 ème message !!!
 

Discussions similaires

Réponses
5
Affichages
3 K

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin