Impression avec PDFcreator

Bonjour à tous,

j'ai créé un programme pour mon entreprise afin de créer des bons de livraison sous excel.

J'ai, dans ce programme, créé une macro pour imprimer avec pdf creator.

cette macro marchait très bien jusqu'à la dernière mise à jour de pdf creator.

Je ne trouve plus la référence PDF creator dans visual basic editor.

pour info je travail sur microsoft office 2010

et la nouvelle version de pdf creator est 2.0 avant celle là j'avais la 1.7

et donc j'ai un messge d'erreur : erreur d'execution 429

Un composant ActiveXne peut pas créer d'objet.

comment puis je faire?

voici mon code vba:

Public Sub Test1()

Dim pdfjob

Dim NomExcel, NomPdf, DefaultPrinter

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")

Dim Chemin As String, Fich As String, rep

Chemin = Workbooks(ActiveWorkbook.Name).Path & "\historique"

Fich = Range("B21").Value & ".pdf"

rep = Dir(Chemin & "\" & Fich)

If rep = "" Then

MsgBox "le fichier n'existe pas création du fichier PDFCreator"

Impression:

With pdfjob

If .cStart("/NoProcessingAtStartup") = False Then

MsgBox "Impossible d'initialiser PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"

Exit Sub

End If

.cOption("UseAutosave") = 1

.cOption("UseAutisaveDirectory") = 1

.cOption("AutosaveDirectory") = Chemin

.cOption("AutosaveFilename") = Fich

.cOption("AutosaveFormat") = 0

.cClearCache

End With

ThisWorkbook.Sheets("Feuil1").PrintOut Copies:=1, ActivePrinter:="PDFCreator"

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

Else

réponse = MsgBox("le fichier existe voulez-vous le remplacer ?", vbYesNo)

If réponse = vbYes Then

MsgBox "Remplacement du fichier existant"

GoTo Impression

Else

MsgBox "Sortie de la procédure"

Exit Sub

End If

End If

Range("M22").Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Chemin & "\" & Fich _

, TextToDisplay:=" "

Range("M22").Select

Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

Range("A1").Select

Dim a As String

Dim b As String

a = Range("M17")

b = Range("E11")

Sheets("Feuil3").Select

Range("A65536").End(xlUp).Offset(1, 0) = b

Range("B65536").End(xlUp) = -a

End Sub

merci d'avance

Salut,

Essaie de regarder de ce côté-là :

lebtibo33 a écrit :

Bonjour à tous,

j'ai créé un programme pour mon entreprise afin de créer des bons de livraison sous excel.

J'ai, dans ce programme, créé une macro pour imprimer avec pdf creator.

cette macro marchait très bien jusqu'à la dernière mise à jour de pdf creator.

Je ne trouve plus la référence PDF creator dans visual basic editor.

pour info je travail sur microsoft office 2010

et la nouvelle version de pdf creator est 2.0 avant celle là j'avais la 1.7

et donc j'ai un messge d'erreur : erreur d'execution 429

Un composant ActiveXne peut pas créer d'objet.

comment puis je faire?

voici mon code vba:

Public Sub Test1()

Dim pdfjob

Dim NomExcel, NomPdf, DefaultPrinter

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")

Dim Chemin As String, Fich As String, rep

Chemin = Workbooks(ActiveWorkbook.Name).Path & "\historique"

Fich = Range("B21").Value & ".pdf"

rep = Dir(Chemin & "\" & Fich)

If rep = "" Then

MsgBox "le fichier n'existe pas création du fichier PDFCreator"

Impression:

With pdfjob

If .cStart("/NoProcessingAtStartup") = False Then

MsgBox "Impossible d'initialiser PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"

Exit Sub

End If

.cOption("UseAutosave") = 1

.cOption("UseAutisaveDirectory") = 1

.cOption("AutosaveDirectory") = Chemin

.cOption("AutosaveFilename") = Fich

.cOption("AutosaveFormat") = 0

.cClearCache

End With

ThisWorkbook.Sheets("Feuil1").PrintOut Copies:=1, ActivePrinter:="PDFCreator"

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

Else

réponse = MsgBox("le fichier existe voulez-vous le remplacer ?", vbYesNo)

If réponse = vbYes Then

MsgBox "Remplacement du fichier existant"

GoTo Impression

Else

MsgBox "Sortie de la procédure"

Exit Sub

End If

End If

Range("M22").Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Chemin & "\" & Fich _

, TextToDisplay:=" "

Range("M22").Select

Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

Range("A1").Select

Dim a As String

Dim b As String

a = Range("M17")

b = Range("E11")

Sheets("Feuil3").Select

Range("A65536").End(xlUp).Offset(1, 0) = b

Range("B65536").End(xlUp) = -a

End Sub

merci d'avance

Bonsoir,

Pourquoi ne pas utiliser le format d'enregistrement PDF d'excel?

Cela éviterait les erreurs à chaque changement de version

cdt,

Il est possible de supprimer la version 2... et de réinstallation la version 1.7.3

Installer le logiciel SumatraPDF gratuit en version ligne de commande, l'avantage de la rapidité, pas de gestion de file d'attente et on choisit l'imprimante ou celle par défaut.

Je m'en sers avec une macro Outlook pour imprimer sur différentes imprimantes (NB, couleur et distante, vous pouvez dupliquer aussi une imprimante avec d'autres paramètres pour faire du recto-verso).

Alors que l'instruction d'impression Outlook ne le fait que sur celle par défaut ou alors il faut changer celle par défaut et la redéfinir "fastidieux et trop long".

Shell "C:\Program Files\SumatraPDF\SumatraPDF.exe """ & FichierPDF, vbNormalFocus 'ou vbMinimizedFocus fichier affiché

L'option -print-to $printer_name $file.pdf Imprime le fichier spécifié sur l'imprimante désignée

'Convertir le fichier xl* concerné en pdf

'Accède au fichier Base pour travailler en fermé

Set FichierBase = GetObject(NomFichier)

'Workbooks.Open FichierBase ' ouverture du fichier

'Récupère seulement la feuille active, sinon faire un test

FichierBase.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFichierTravail, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False ' sauvegarde du fichier au format pdf

'Exemple avec les options ActiveDocument.ExportAsFixedFormat OutputFileName:="D:StuffBusinessTempPDFName.pdf", ExportFormat:=wdExportFormatPDF, Range:=wdExportFromTo, From:=1, To:=1

FichierBase.Close (False) ' fermeture du fichier

Set FichierBase = Nothing

Complément sur le détail de l'instruction d'impression SumatraPDF en exemples pour les guillemets:

Cible = Shell("C:\Program Files\SumatraPDF\SumatraPDF.exe -Print-to ""\\SRVAMPROD\Xerox 7328 COULEUR"" """ & FichierSource, vbNormalFocus)

Cible = Shell("C:\Program Files\SumatraPDF\SumatraPDF.exe -Print-to ""Xerox 7530 couleur recto-verso"" """ & FichierSource, vbNormalFocus)

'https://github.com/sumatrapdfreader/sumatrapdf/wiki/Command-line-arguments

'Option : Par exemple. -print-settings "1-3,5,10-8, impair, propres" imprime les pages 1, 3, 5, 9 (par exemple les pages impaires des gammes 1-3, 5-5 et 10-8) et des échelles afin qu'ils insèrent dans la zone imprimable du papier.

-print-settings "3x" imprime le document 3 fois.

Cible = Shell("C:\Program Files\SumatraPDF\SumatraPDF.exe -print-to-default """ & FichierSource, 1)

Rechercher des sujets similaires à "impression pdfcreator"