Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Créer un PDF et l'imprimer

bloomby

XLDnaute Occasionnel
Bonjour à tous,

j'ai trouvé un fil interessant qui répond à ces deux questions

https://www.excel-downloads.com/threads/edition-pdf.112586/

Par contre, malgré le fait que j'ai installer PDFCreator,
je suis incapable de créer un PDF

J'aimerais dans un premier temps séparer le projet en 2 macros

soit l'une qui ne fait que créer un PDF
et l'autre, Créer un PDFet l'imprime

si quelqu'un aurait une piste de solution je serais preneur
merci

Code:
Sub PrintTest()
    Call PrintSheetInPDF(Worksheets("Sheet1"))
End Sub '~PrintTest

Sub PrintSheetInPDF(shSheet As Worksheet)
    Dim pdfjob      As Object
    Dim sPDFName    As String
    Dim sPDFPath    As String
    
    '/// Changer le nom du fichier de sortie sur la ligne ci dessous: ///
    sPDFName = ThisWorkbook.Name & "_" & shSheet.Name & ".pdf"
    sPDFPath = ThisWorkbook.Path
    'Check if worksheet is empty and exit if so
    
    shSheet.Select
    
    If IsEmpty(shSheet.UsedRange) Then Exit Sub
    
    ' ##############################
    ' Pas trés propre, mais je n'ai pas réussi à récupérer l'instance de la classe
    ' PDFCreator.clsPDFCreator avec la fonction GetObject
    ' Remarque : si la tache "PDFCreator.exe" n'existe pas, la fonction KillTask("PDFCreator.exe") ne fait rien
    Call KillTask("PDFCreator.exe")
    ' ##############################
 
    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("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sPDFPath
        .cOption("AutosaveFilename") = sPDFName
        .cOption("AutosaveFormat") = 0 ' 0 = PDF
        .cClearCache
    End With
    'Imprime le document en PDF
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
    'Attend que le document soit entré dans la file d'impression
    Do Until pdfjob.cCountOfPrintjobs = 1
        DoEvents
    Loop
    pdfjob.cPrinterStop = False
    'Attend que l'impression du document soit terminée
    Do Until pdfjob.cCountOfPrintjobs = 0
        DoEvents
    Loop

    With pdfjob
        .cDefaultPrinter = DefaultPrinter
        .cClearCache
        Application.Wait (Now + TimeValue("0:00:3"))
        .cClose
    End With
    
    Set pdfjob = Nothing
End Sub '~PrintSheetInPDF


Sub KillTask(sAppName As String)
    Dim oProcList   As Object
    Dim oWMI        As Object
    Dim oProc       As Object
    
    'Create WMI object instance:
    Set oWMI = GetObject("winmgmts:")
    If IsNull(oWMI) = False Then
        'Create object collection of Win32 processes:
        Set oProcList = oWMI.InstancesOf("win32_process")
        'Iterate through the enumerated collection:
        For Each oProc In oProcList
            If UCase(oProc.Name) = UCase(sAppName) Then
                oProc.Terminate (0)
            End If
        Next oProc
    Else
        'Report Error
        MsgBox "Killing """ & sAppName & """ - Can't create WMI Object.", vbOKOnly + vbCritical, "CloseAPP_B"
    End If
    
    'Clear out the objects:
    Set oProcList = Nothing
    Set oWMI = Nothing
End Sub '~KillTask
 

nat54

XLDnaute Barbatruc
Re : Créer un PDF et l'imprimer

Ces ajouts permettent la sélection des différents onglets (ils sont en surbrillance comme lorsqu'on les sélectionne avec shift)
mais seul le 1er onglet est transformé en pdf
 

kinel

XLDnaute Occasionnel
Re : Créer un PDF et l'imprimer

as tu bien défini la zone d'impression de chaque feuille ?

essaye de créer une macro avec l'enregistreur et sélectionne les feuilles concernées
puis reprends la ligne pour l'intégrer à la macro editer

c'est peut être juste un problème d'identification des feuilles

Kinel
 

bloomby

XLDnaute Occasionnel
Re : Créer un PDF et l'imprimer

Bonjou kinel, bonjour nat54,

Pour ma part le pdf ne se créer tout simplement pas,
je vais regarer p-e que PDFCreator n'est pas bien installer, à cause de NitroPDF

je vais réinstaller le tout et vous en donnez des nouvelles
 

nat54

XLDnaute Barbatruc
Re : Créer un PDF et l'imprimer

en fait c'est peut-être simplement pas possible

si je fais en manuel (donc complètement sans vba), quand tu sélectionnes 2 onglets, tu lances pdf cretor, seul le 1er est transformé en pdf

donc si déjà en manuel ca ne fonctionne pas, je pense qu'en vba cela reproduit le même process

tu as essayé en manuel ?
 

MJ13

XLDnaute Barbatruc
Re : Créer un PDF et l'imprimer

Bonjour à tous

si je fais en manuel (donc complètement sans vba), quand tu sélectionnes 2 onglets, tu lances pdf cretor, seul le 1er est transformé en pdf

Est-ce sur (à moins que cela soit sous Acrobat) mais j'ai déjà obtenu plusieurs onglets d'Excel pour un PDF?

A vérifier que si l'on ouvre le fichier XLS, les différents onglets sont bien sélectionnés.
 

kinel

XLDnaute Occasionnel
Re : Créer un PDF et l'imprimer

bonjour à tous

j'y arrive avec pdfcreator
difficile de mettre un fichier exemple car les références de pdfcréator ne seront peut être pas les mêmes sur un autre poste

et mon classeur est un peu trop gros (ce n'est pas MJ13 qui me contredira ! )

kinel
 

nat54

XLDnaute Barbatruc
Re : Créer un PDF et l'imprimer

Bonjour

Ca marche sur un fichier bidon, cf pièce jointe
(le pdf est zippé car le format pdf n'est pas accepté)

Je réessaie sur mon fichier de travail
 

Pièces jointes

  • fichier-test.xls
    14.5 KB · Affichages: 61
  • fichier-test.zip
    1.6 KB · Affichages: 33
  • fichier-test.xls
    14.5 KB · Affichages: 59
  • fichier-test.zip
    1.6 KB · Affichages: 33
  • fichier-test.xls
    14.5 KB · Affichages: 63
  • fichier-test.zip
    1.6 KB · Affichages: 34

nat54

XLDnaute Barbatruc
Re : Créer un PDF et l'imprimer

par contre j'ai voulu tester un truc
dans les options du pdf creator, enregistrement automatique avec un nom et un dossier précis du sauvegarde avec envoi par email
mais maintenant ca le fait pour toutes mes transformations
et je n'arrive plus à avoir la boîte de dialogue où j'ai pu choisir cette option

d'ailleurs question subsidiaire : par défaut il met
<DateTime> comme titre
peut-on (je ne connais pas la syntaxe) dire NomOnglet ?

Merci
 

kinel

XLDnaute Occasionnel
Re : Créer un PDF et l'imprimer

il faut ouvrir pdfcreator par le menu démarrer et ouvrir réglages pdfcréator

tu vas ensuite dans l'option enregistrement automatique et là tu as un tas d'options

Kinel
 

Discussions similaires

Réponses
2
Affichages
657
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…