Imprimer pdf word à partir d'excel

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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à
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Il faut lire

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


      Le site a supprimé l'antislash
      0
    2. Rems
       
      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 !
      0
      1. Utilisateur anonyme > Rems
         
        Bonjour, as tu installé pdfcreator?
        0