VBA Fusionner des PDF avec PdfCreator
Bonjour à tous les "Excel(lents)-Pratique(tiens)"
Donc je vous propose mon code afin de compiler 3 pdf en VBA avec PdfCreator.
DEUX problèmes se posent :
1- J'ouvre mon fichier xlsm contenant mon code, je lance ma macro et tout fonctionne parfaitement (J'suis content
Je relance ma macro une deuxième fois ... Je n'ai plus qu'un seul fichier qui est fusionné !
Je re-relance une troisième fois... ça marche !
J'ai ajouté un If qui compte et qui relance, mais bon, c'est un emplâtre sur une jambe de bois
Quelqu'un aurait-il une vraie solution ???
2- Après ces manipulations, je lance PdfCreator et là je me retrouve avec tout plein de fichiers dans la file d'attente !
Je propose de faire un CLEARCACHE de PdfCreator mais je n'arrive pas à lancer la commande Shell donc je ne sais pas si cela fonctionne.
Un un Ex(cel)pert pour une une solution ???
Merci d'avance.
Sébastien
'Necessite PDFCreator_COM
Sub FusionPdf()
Dim PdfCrea, PdfCreaFile, PdfCreaImp As Object
Dim TraImp As PrintJob
Dim TabLiens(2, 1)
'++++++++++++++++++++++++++++++++++++++++++++++++
On Error Resume Next
'++++++++++++++++++++++++++++++++++++++++++++++++
Set PdfCrea = Nothing
Set PdfCreaFile = Nothing
Set TraImp = Nothing
'++++++++++++++++++++++++++++++++++++++++++++++++
TabLiens(0, 0) = Dir(ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 1\" & "01*Nom1*.pdf")
TabLiens(0, 1) = ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 1\" & TabLiens(0, 0)
TabLiens(1, 0) = Dir(ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 2\" & "01*Nom2*.pdf")
TabLiens(1, 1) = ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 2\" & TabLiens(1, 0)
TabLiens(2, 0) = Dir(ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 3\" & "01*Nom3*.pdf")
TabLiens(2, 1) = ThisWorkbook.Path & "\01 Dossier Test\01 Sous-Dossier Test 3\" & TabLiens(2, 0)
'++++++++++++++++++++++++++++++++++++++++++++++++
Debut:
'++++++++++++++++++++++++++++++++++++++++++++++++
Set PdfCrea = CreateObject("PDFCreator.PDFCreatorObj")
Set PdfCreaFile = CreateObject("PDFCreator.JobQueue")
Call PdfCreaFile.Initialize
'++++++++++++++++++++++++++++++++++++++++++++++++
Call PdfCrea.AddFileToQueue(TabLiens(0, 1))
Call PdfCrea.AddFileToQueue(TabLiens(1, 1))
Call PdfCrea.AddFileToQueue(TabLiens(2, 1))
'++++++++++++++++++++++++++++++++++++++++++++++++
If PdfCreaFile.Count <= 1 Then
GoTo Recommencer
End If
'++++++++++++++++++++++++++++++++++++++++++++++++
Call PdfCreaFile.MergeAllJobs
'++++++++++++++++++++++++++++++++++++++++++++++++
Set TraImp = PdfCreaFile.NextJob
With TraImp
.SetProfileByGuid "DefaultGuid"
.SetProfileSetting "ShowProgress", "false"
.ConvertTo (ThisWorkbook.Path & "\" & "FusionDesPdf.pdf")
End With
'++++++++++++++++++++++++++++++++++++++++++++++++
Call PdfCreaFile.Clear
Call PdfCreaFile.ReleaseCom
Set PdfCrea = Nothing
Set PdfCreaFile = Nothing
Set TraImp = Nothing
'++++++++++++++++++++++++++++++++++++++++++++++++
'Peut-etre appeler ClearCache de PdfCreator ???
'C:\Program Files\PDFCreator> .\pdfcreator.exe /CLEARCACHE
'++++++++++++++++++++++++++++++++++++++++++++++++
Exit Sub
Recommencer:
Call PdfCreaFile.Clear
Call PdfCreaFile.ReleaseCom
Set PdfCrea = Nothing
Set PdfCreaFile = Nothing
Set TraImp = Nothing
'++++++++++++++++++++++++++++++++++++++++++++++++
'C:\Program Files\PDFCreator> .\pdfcreator.exe /CLEARCACHE
'++++++++++++++++++++++++++++++++++++++++++++++++
GoTo Debut
End Sub