mister red
XLDnaute Nouveau
Bonjour, grâce à l'aide du forum et de vous autres (et mille merci) , j'ai créé une fonction qui permet de générer un pdf par onglet avec pdfcreator.
Ensuite je fusionne les pdfs provenant de différents classeurs pour construire un pdf unique en utilisant un outil externe qui permet de fusionner des pdfs. J et je souhaite pouvoir complètement automatiser la création du pdf fusionné
Y-a-t-il moyen, à votre connaissance, de générer le pdf fusionné directement à partir d'excel et en une seule fois , sachant que tous les classeurs dont j'ai besoin sont ouverts ?
Ci-dessous le code utilisé pour la génération 1 onglet -> 1 pdf. Juste pour comprendre les paramètres de la fonction, il s'agit de créer un rapport de performance de projets informatiques à partir d'onglets provenant de plusieurs excels. J'ai besoin du nom du projet mesuré, du nom de l'onglet à imprimer, et du nom de pdf généré.
Super merci pour votre aide.
Sub GenererUnPDF(UnNomProjet As Range, Nomfichier As String, Onglet As String)
' sous VBA Menu Outils | Références Cocher PDFCreator
Dim jobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String
On Error GoTo MyEnd
Sheets(Onglet).Activate
sNomPDF = Nomfichier & " " & UnNomProjet.Value & ".pdf"
sCheminPDF = ActiveWorkbook.Path & Application.PathSeparator & "PDF" & Application.PathSeparator
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set jobPDF = CreateObject("PDFCreator.clsPDFCreator")
With jobPDF
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sCheminPDF
.cOption("AutosaveFilename") = sNomPDF
'0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
'Fichier dans la file d'attente
Do Until jobPDF.cCountOfPrintjobs = 1
DoEvents
Loop
jobPDF.cPrinterStop = False
'Attendre que la file d'attente soit vide
Do Until jobPDF.cCountOfPrintjobs = 0
DoEvents
Loop
jobPDF.cClose
Set jobPDF = Nothing
Exit Sub
MyEnd:
MsgBox "Problème lors de la génération de PDF"
End Sub
Ensuite je fusionne les pdfs provenant de différents classeurs pour construire un pdf unique en utilisant un outil externe qui permet de fusionner des pdfs. J et je souhaite pouvoir complètement automatiser la création du pdf fusionné
Y-a-t-il moyen, à votre connaissance, de générer le pdf fusionné directement à partir d'excel et en une seule fois , sachant que tous les classeurs dont j'ai besoin sont ouverts ?
Ci-dessous le code utilisé pour la génération 1 onglet -> 1 pdf. Juste pour comprendre les paramètres de la fonction, il s'agit de créer un rapport de performance de projets informatiques à partir d'onglets provenant de plusieurs excels. J'ai besoin du nom du projet mesuré, du nom de l'onglet à imprimer, et du nom de pdf généré.
Super merci pour votre aide.
Sub GenererUnPDF(UnNomProjet As Range, Nomfichier As String, Onglet As String)
' sous VBA Menu Outils | Références Cocher PDFCreator
Dim jobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String
On Error GoTo MyEnd
Sheets(Onglet).Activate
sNomPDF = Nomfichier & " " & UnNomProjet.Value & ".pdf"
sCheminPDF = ActiveWorkbook.Path & Application.PathSeparator & "PDF" & Application.PathSeparator
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set jobPDF = CreateObject("PDFCreator.clsPDFCreator")
With jobPDF
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sCheminPDF
.cOption("AutosaveFilename") = sNomPDF
'0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
'Fichier dans la file d'attente
Do Until jobPDF.cCountOfPrintjobs = 1
DoEvents
Loop
jobPDF.cPrinterStop = False
'Attendre que la file d'attente soit vide
Do Until jobPDF.cCountOfPrintjobs = 0
DoEvents
Loop
jobPDF.cClose
Set jobPDF = Nothing
Exit Sub
MyEnd:
MsgBox "Problème lors de la génération de PDF"
End Sub