Choix imprimante sans commondialog

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 183 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

Messages postés
6
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
29 septembre 2008

Merci bocoup pour ton code, mais j'ai une préoccupation ce code est t'il valable pour les états sous Crystal Report?
Car c'est ce dernier que j'utilise pour mes états sous VB.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Printer.copies = 2
Messages postés
91
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
21 août 2011

peut tu me donner un exemple pour le nb de copies. Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
bien que je n'en comprenne pas le but exact...
(les CommonDialog permettent de modifier le parametrage, sont localisées, etc)

ces deux etapes me semblent 'logiquement' inversées :

For Each X In Printers
...
Next

If Printers.Count = 0 Then
...
Exit Sub
End If

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.