Imprimer pdf word à partir d'excel [Résolu/Fermé]

Signaler
Messages postés
39
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
29 mars 2018
-
Whismeril
Messages postés
14249
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
-
Bonjour, je sollicite votre aide pour résoudre un problème de taille sur le quelle je travail depuis vendredi dernier et qui ne fonctionne pas du tout. Je dois imprimer dans un fichier PDF une partie d'un documents word mêler à des documents excel. Il m'est impossible d'imprimer le document sélectionné avec pdfcreator. Je regarder sur tout les forums que j'ai trouvé et rien ne règle mon problème.

voici un code que j'ai trouvé sur interner et qui ferais ce dont j'ai besoin en gros:

Sub ToPdf()


Dim oWord As Word.Application
Dim oDoc As Word.document
Dim NomWord As String

VBA.Interaction.Shell ("TASKKILL /F /IM winword.exe")' Ferme Word s'il est ouvert dans le gestionnaire de tâche.

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
Set oWord = CreateObject("word.application")

oWord.Documents.Open "c:\users\jsgermain\documents\test\toto.doc"

Set oDoc = ActiveDocument
NomWord = ActiveDocument.name
NomPdf = Left(NomWord, Len(NomWord) - 4) & ".pdf"

'Si PDFCreator est ouvert, fermer l'application.
Do
Restart = False
Set pdfjob = New PDFCreator.clsPDFCreator
If pdfjob.cStart("/NoProcessingAtStartup") = False Then
'PDF Creator is already running. Kill the existing process
Shell "taskkill /im PDFCreator.exe" ', vbHide
DoEvents
Set pdfjob = Nothing
Restart = True
End If
Loop Until Restart = False

'Check if worksheet is empty and exit if so
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0
.cOption("AutosaveDirectory") = ActiveDocument.Path
.cCombineAll
.cClearCache
End With

ActivePrinter = "PDFCreator sur NE00:"
oWord.Documents.Open "c:\users\jsgermain\documents\test\toto.doc"
oWord.ActiveDocument.PrintOut copies:=1, Pages:="3-13"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop

With pdfjob
.cDefaultPrinter = DefaultPrinter
.cClearCache
.cClose
End With

Set pdfjob = Nothing

End Sub


À la fin il a imprimer mon document mais papier. Pourtant, dans word, il le fait vraiment dans un PDF. La commande "activeprinter" ne fonctionne pas. Avec la commande si-dessous, ça fonctionne dans un fichier excel mais si je remplace le début par mon documents, ça ne fonctionne pas plus.

dans excel:
Sheets("Soumission").Range("a1:h290").PrintOut copies:=1, ActivePrinter:="PDFCreator"

dans excel mais à partir du fichier word:
oWord.ActiveDocument..PrintOut copies:=1, ActivePrinter:="PDFCreator"

Je suis vraiment désespéré. Il faut que je règle cela.

merci de votre aide.

3 réponses

Messages postés
23271
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 février 2020
5 927
Bonjour,

J'ai l'impression que tu définis l'imprimante pour excel, pas pour word.
Essaie en la choisissant déjà manuellement dans word (si il est affiché, et en mettant un stop dans ta procédure avant l'impression) voir si ça se confirme.

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
6566
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 février 2020
454
Bonjour,

Je ne suis pas sur d'avoir compris. Vous voulez imprimer un document Word en PDF à partir d'Excel?

Si c'est cela, voici le code:

'Allez dans Outils-référence et cochez: Microsoft Word 12.0 Object Library et PDFCreator
Option Explicit
Sub ToPdf()
Dim chemindoc, chemindossier, NomWord, NomPdf As String
Dim DefaultPrinter
Dim pdfjob
Dim DocWord As Word.Document
Dim AppWord As Word.Application
Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True

chemindoc = "c:\users\jsgermain\documents\test\toto.doc"
chemindossier = "c:\users\jsgermain\documents"

Set DocWord = AppWord.Documents.Open(chemindoc, ReadOnly:=False)
NomWord = AppWord.ActiveDocument.Name
NomPdf = Left(NomWord, Len(NomWord) - 4) & ".pdf"

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = chemindossier 'Chemin dossier destination
.cOption("AutosaveFilename") = NomPdf
.cOption("AutosaveFormat") = 0
.cClearCache
End With
pdfjob.cDefaultprinter = "PDFCreator"
AppWord.ActiveDocument.PrintOut copies:=1

Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing

AppWord.Documents.Close
AppWord.Visible = False

MsgBox "Votre PDF se trouve à cet emplacement: " & chemindossier & NomPdf, vbInformation, "Convertir en PDF"
End Sub




Voilà
cs_Le Pivert
Messages postés
6566
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 février 2020
454
Il faut lire

chemindossier = "c:\users\jsgermain\documents\test\"


Le site a supprimé l'antislash
J'ai tout le temps l'erreur : "Can't initialize PDFCreator"
Comment fait-on pour ne pas l'avoir SVP ça fait quelques heures que je suis dessus maintenantHELP PLEASE !
Whismeril
Messages postés
14249
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
463 > Rems
Bonjour, as tu installé pdfcreator?
Messages postés
39
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
29 mars 2018

:-) Merci!