Choix imprimante sans commondialog

Contenu du snippet

Permet de choir l'imprimante de son choix sans commondialog.
Pourquoi ? parce que je trouvais trop compliqué la gestion des imprimantes par défaut et qu'il est difficile de récupérer l'info de l'imprimante choisie et de l'affecter à l'objet printer.
Biensur, cet objet peut évoluer très simplement en y ajoutant le nb de pages, de tel page à telle page etc. mais je n'en avais pas besoin.

Source / Exemple :


'dans une form
'ajouter un combobox CbPrinters en mode dropdownlist
'ajouter un bouton CmdPrint

Dim TbPrinter() As Object

Private Sub CmdPrint_Click()
'envoie la commande dimpression sur l'imprimante sélectionnée
FrmConcentrations.Imprimer TbPrinter(CbPrinters.ListIndex)
Debug.Print CbPrinters.ListIndex
Unload Me
End Sub

Private Sub Form_Load()

CbPrinters.Clear
Dim X As Printer
'redimmensionne le tableau en fct du nb imprimantes
ReDim TbPrinter(0 To Printers.Count - 1)
Debug.Print "nb imprimantes : " & Printers.Count
Dim NbPrinter As Integer, SelPrinter As Integer
For Each X In Printers
   CbPrinters.AddItem X.DeviceName
   Set TbPrinter(NbPrinter) = X
   NbPrinter = NbPrinter + 1
Next
'gere si pas d'imprimante
If Printers.Count = 0 Then
    MsgBox "Pas d'imprimante trouvée. Opération annulée.", vbCritical, "Erreur d'impression"
    Exit Sub
End If
'selectionne l'imprimante par défaut actuelle dans la liste
CbPrinters.Text = Printer.DeviceName
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'annule l'impression
Unload Me
End Sub

Sub Imprimer(Imprimante)
'Debug.Print Imprimante
Set Printer = Imprimante

On Error GoTo err:
'imprimer ici
printer.print "TEST"

Printer.EndDoc
Exit Sub

err:
MsgBox "Problème d'impression : Récupération impossible des données ou imprimante indisponible.", vbCritical, "Erreur"

end sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.