Dim a As String On Error Resume Next a = Printer.DeviceName If Err.Number = 0 Then MsgBox "Imprimante présente : " & a Else MsgBox "Pas d'imprimante" End If On Error GoTo 0
Option Explicit Private Declare Function EnumPrintersA Lib "Winspool.drv" _ (ByVal flags As Long, ByVal name As String, ByVal Level As Long, _ pPrinterEnum As Long, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long Private Declare Function lstrlenA Lib "Kernel32" (ByVal lpString As Any) As Long Private Declare Function lstrcpyA Lib "Kernel32" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long Public ImprEnum() As String Public Function NbPrinter() As Integer Dim PrinterEnum() As Long Dim Needed As Long, Returned As Long, I As Integer EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0 ReDim PrinterEnum(Needed / 4) EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _ Needed, Needed, Returned ReDim ImprEnum(1 To Returned) For I = 1 To Returned ImprEnum(I) = Space$(lstrlenA(PrinterEnum(I * 5 - 5))) lstrcpyA ImprEnum(I), PrinterEnum(I * 5 - 5) Next I NbPrinter = I - 1 End Function
If NbPrinter > 0 then ' Il y a au moins une imprimantes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionOption Explicit Private Sub Command1_Click() Dim PRt As Printer, NomPr As String, e As Integer, Im NomPr = List1.List(List1.ListIndex) For Each PRt In Printers If PRt.DeviceName = NomPr Then Set Printer = PRt Exit For End If Next NomPr = Printer.DeviceName Label1 = NomPr End Sub Private Sub Form_Load() Dim i Dim PRt As Printer, NomPr As String, e As Integer, Im NomPr = Printer.DeviceName Label1 = NomPr 'List1.Style = 1 : A déterminer dans le design For Each PRt In Printers List1.AddItem PRt.DeviceName If PRt.DeviceName NomPr Then Im e e = e + 1 Next List1.Selected(Im) = True End Sub Private Sub List1_Click() Dim i For i = 0 To List1.ListCount - 1 If i <> List1.ListIndex Then List1.Selected(i) = False Next i End Sub
If Printers.count>0 then 'Il y a une (ou des) imprimante(s)