Détecter l'imprimante active ?

Bonjour à tous,

Je cherche un programme qui me permettrait de détecter l'imprimante active par défaut et éventuellement de la changer.. .

J'ai trouvé un post sur Excel-pratique de Barbouze qui indique avoir trouvé le code nécessaire :

https://forum.excel-pratique.com/excel/savoir-l-imprimante-active-t40222.html

image

J'ai bien essayé de mettre le code dans un worksheet, mais apparemment, le compilateur ne l'entend pas de cette oreille...

image

Quelqu'un d'entre vous peut-il m'aider à trouver ce code ? Merci pour votre aide.

Bonjour,

Teste ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.Dialogs(Excel.XlBuiltInDialog.xlDialogPrinterSetup).Show
End Sub

Bonjour ChrisBlues, M12,

Voir ci-dessous le code utile.

Sub PrintChoix()
P = Application.Dialogs(xlDialogPrinterSetup).Show
If P = True Then
'Envoi à l'imprimante choisie
Monchoix = Application.ActivePrinter
'Feuille à imprimer avec aperçu avant impression
Worksheets("Liste").PrintOut Preview:=True, ActivePrinter:=Monchoix
End If
End Sub

En cliquant Ok sur l'imprimante en surbrillance tu choisis de fait l'imprimante active. Sinon tu changes d'imprimante dans la liste affichée puis OK.

Ensuite tu imprimes ta feuille. Si tu ne souhaites pas l'aperçu (Preview:=True) tu l'ôtes du code.

Bonsoir M12, bonsoir X Cellus,

C'est PAR - FAIT ! Aussi bien l'une des procédures que l'autre, elles fonctionnent parfaitement : ayant deux imprimantes (l'une en laser encre noire, l'autre en impression couleur), j'ai pu tester le changement d'imprimante active sans aucun problème.

Pour la procédure de X Cellus, étant sous Option Explicit, le programme m'a demandé de définir "P" et "monchoix" : j'ai mis "P as Long, monchoix as Long". C'est bon ?

Pas de doute que ça va plaire à nombre d'internautes qui viendront faire un tour ici.

Merci de votre aide. Super !

PS : Pour ceux qui seraient intéressés, inutile de mettre les codes dans un worksheet, placez-les dans un module, affectez les macros à deux boutons de commande, cliquez dessus, l'affichage se fait... Magique !

Une petite correction est nécessaire pour la procédure de X Cellus : lorsque je sélectionne une imprimante, maintenant, j'ai un message d'erreur...

image image

J'ai essayé un autre type pour monchoix (String) : j'ai eu un autre message d'alerte...

image image

Bref, j'ai fait un mauvais typage à cause de Option Explicit probablement, et je ne sais pas quoi mettre : mes connaissances ne sont pas suffisamment étendues pour trouver la solution...

Bonjour ChrisBlues,

Bref, j'ai fait un mauvais typage à cause de Option Explicit probablement

En effet, P est de type boléen, donc soit vrai (True), soit faux (False). Donc Dim P as Boolean

Monchoix est bien sur un texte, donc tu l'as bien paramétré ensuite. Dim Monchoix as String

Quand à la dernière erreur n° 9 (indice). C'est que tu n'as pas de feuille nommée Liste dans ton classeur.

Donc inscrit le nom d'un onglet valide pour qu'il puisse visualiser puis imprimer cette feuille.

Bonjour X Cellus,

Oui, bien sûr ! J'aurais peut-être pu trouver moi-même... en y regardant de plus près ! Maintenant, c'est vraiment impeccable ! Un grand merci encore !

J'ai encore une petite question : y a-t-il un moyen de mettre dans une variable le nom de l'imprimante active ?

Car au click sur la validation du choix de l'imprimante, je lance un MsgBox : "Votre imprimante (Nom de l'imprimante) est-elle prête ?"

Merci de ton aide.

C'est bon, X Cellus, j'ai trouvé :

Sub NmImpr()

Dim NomImprimante As String
       NomImprimante = Application.ActivePrinter
       MsgBox NomImprimante
End Sub

C'est pas difficile, hein !

@+

Suite

Oui, c'était là

'Envoi à l'imprimante choisie
Monchoix = Application.ActivePrinter

1 chance sur 4 de trouver la bonne ligne...

Maintenant tu peux t'intéresser au débogage (si tu as le temps).

C'est à dire de tester les valeurs prises par tes variables.

Exemple: un truc simple. Mettre un stop.

'Envoi à l'imprimante choisie
Monchoix = Application.ActivePrinter
stop

Cela va arrêter la macro. En survolant la variable Monchoix avec la souris cela te donnera sa valeur.

Ensuite met en commentaire le stop ou ôte le du code.

Rechercher des sujets similaires à "detecter imprimante active"