Impression sur deux imprimantes en une fois sans passer par boite de dial (VBA)

CVS67

XLDnaute Nouveau
Bonjour,

Je cherche a imprimer une version papier et une version PDF en une fois de la sélection de ma feuille de calcul sans passer par la boite de dialogue, dans l'aide les arguments ne sont pas documentés quelqu'un aurait il une idée.

voici mon "code"

Sub MacroPrint()
'
s = Range("Q46").Value 'mon compteur pour incrémenter ma zone d'impression
ActiveSheet.PageSetup.PrintArea = "$A$1:$P" & 69 + s 'ma zone d'impression
Application.Dialogs(xlDialogPrint).Show 'impression papier
Application.Dialogs(xlDialogPrint).Show 'impression PDF
'les arguments dont je ne sais comment me servir : range_num, from, to, copies, draft, preview, print_what, color, feed, quality, y_resolution, selection, printer_text, print_to_file, collate

'autre essais avec PrintOut mais comment selectionner une autre imprimante (PDF) et lui donner un nom et un chemin ?

'Selection.PrintOut Copies:=1, ActivePrinter:=True, Preview:=True, Collate:=True

End Sub

pour l'imprimante PDF je souhaiterais définir le chemin et le nom du fichier + date

ps: j'ai utilisé la fonction recherche sur le forum mais je n'ai rien trouvé de pertinent à ce sujet

merci beaucoup
 

CVS67

XLDnaute Nouveau
Re : Impression sur deux imprimantes en une fois sans passer par boite de dial (VBA)

Bonjour,

merci pour les liens qui m'ont aidés, j'ai repris certaines lignes de code
Voici le résultat

Sub Macor_print()

s = Range("Q46").Value
ActiveSheet.PageSetup.PrintArea = "$A$1:$P" & 69 + s
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String

sNomPDF = "BORDEREAU " & [N4].Value & ".pdf"
sCheminPDF = "C:\Users\michel\Desktop"

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
.cOption("AutosaveFormat") = 0
.cClearCache
End With

ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"


ActiveSheet.PrintOut Copies:=1, ActivePrinter:=[S6].Value

End Sub

Et pour voir quelle imprimante est sélectionné

Sub Macrodeselectprinter()
'
Range("S6").Value = Application.ActivePrinter
End Sub

Bonne journée
 
Dernière édition:

CVS67

XLDnaute Nouveau
Re : Impression sur deux imprimantes en une fois sans passer par boite de dial (VBA)

En fait cela ne fonctionne pas si bien que ça

Pouvez vous m'expliquer ce que sont ces lignes de code ou tout au moins me dire ou je peux trouver de la doc ou des explications de ce que c'est.

.cStart("/NoProcessingAtStartup")
.cOption("AutosaveDirectory") = sCheminPDF

est ce que ces lignes sont obligatoires je ne vois pas a quoi elles servent

'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

merci
 
Dernière édition: