OVH Cloud OVH Cloud

choisir une imprimante disponible avec VBA

1 réponse
Avatar
Michel Voirain
Bonjour à tous,
J'arrive très bien à faire apparaitre la fenêtre qui permet de choisir une
imprimante parmi celles qui sont installées avec :
Application.Dialogs(xlDialogPrinterSetup).Show
Mais je constate que ce code me présente toutes les imprimantes installées
sans différencier celles qui sont dispo de celles qui ne le sont pas. Je
voudrais ne voir apparaitre que les imprimantes disponibles (celles qui ne
sont pas disponibles apparaitraient en grisé et les dispos en normal !
Est-ce possible ?
Merci à tous
Michel

1 réponse

Avatar
JohnFuss
Bonjour,

pour ma part j'utilise cette fonction made in moi-même pour connaitre le
nombre d'imprimante, avoir des infos sur l'une de ces imprimantes (par son
numéro) et le cas échéant la mettre 'par défaut'.
Peut-être y trouveras-tu ton bonheur.

Bon courage.

John


'---------------------------------------------------------------------------------------
' Function : GetPrinterInfo As String
' Sujet : Index de 0 à Count - 1, -1 renvoi le nom de l'imprimante par
defaut
' SetDefault = True => defini l'imprimante Index comme defaut
' Renvoi : L'info demandée sur les imprimantes
' Exemple : For i = 1 To Val(GetPrinterInfo(, PrintersCount))
'---------------------------------------------------------------------------------------
'
Public Function GetPrinterInfo(Optional Index As Integer = -1, Optional
TypeRetour As PrinterInfos = PrintersName, Optional SetDefault As Boolean =
False) As String
Dim PrnList As Object, i As Integer
On Error GoTo GetPrinterInfo_Error

If TypeRetour = PrintersCount Then
Set PrnList = CreateObject("WScript.Network").EnumPrinterConnections
GetPrinterInfo = CStr(PrnList.Count / 2)
Else
With CreateObject("WScript.Network")
Set PrnList = .EnumPrinterConnections
If Index = -1 Then
For i = 1 To PrnList.Count - 1 Step 2
If InStr(Application.ActivePrinter, PrnList(i)) > 0 Then
GetPrinterInfo = PrnList(i)
Exit For
End If
Next
Else
GetPrinterInfo = PrnList(Index * 2 + 1)
If SetDefault And InStr(Application.ActivePrinter,
PrnList(Index * 2 + 1)) = 0 Then .SetDefaultPrinter PrnList(Index * 2 + 1)
End If
End With
End If
Set PrnList = Nothing
GetPrinterInfo_Error:
End Function



"Michel Voirain" a écrit dans le message de
news:
Bonjour à tous,
J'arrive très bien à faire apparaitre la fenêtre qui permet de choisir une
imprimante parmi celles qui sont installées avec :
Application.Dialogs(xlDialogPrinterSetup).Show
Mais je constate que ce code me présente toutes les imprimantes installées
sans différencier celles qui sont dispo de celles qui ne le sont pas. Je
voudrais ne voir apparaitre que les imprimantes disponibles (celles qui ne
sont pas disponibles apparaitraient en grisé et les dispos en normal !
Est-ce possible ?
Merci à tous
Michel