Dectecter la présence d'une imprimante

Résolu
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011 - 30 sept. 2010 à 18:49
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 2 oct. 2010 à 11:38
slt a tous ,j'ai cherché le code et j'ai pas trouvé...
j'aimerais un code qui me rend un message lorsque il y une imprimante qui est connectée
a mon ordinateur.
j'aimerais l'inserer dans un projet dans lequel l'impression se fait directement sans "Apercu avant impression"..
Merci d'avance..

Eridyms.......

13 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 sept. 2010 à 19:53
Salut

    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

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
30 sept. 2010 à 20:17
Bonjour,
Plus compliquer mais aussi plus "conventionnel",
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

A+
3
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 oct. 2010 à 18:23
Mais oui,
If NbPrinter > 0 then ' Il y a au moins une imprimantes


Mais avec cette fonction tu a aussi le nom de la/les imprimante(s). Ce qui permet éventuellement de sélectionner une autre imprimante.
A+
3
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011
1 oct. 2010 à 17:38
merci..... mais comment appelé la fonction....
je peux avoir un exemple....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011
1 oct. 2010 à 19:10
ok...Dans le cas ou j'aurai plusieurs imprimante
[code=vb]
NbPrinter > 0 then
for i=1 to NbPrinter
combo1.addItem Printer.DeviceName

next
je pense que c'est ca
et comment montrer que c'est le choix qu'aura fait l'utilisateur qui servira a l'impression
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 oct. 2010 à 21:16
Tu dis, sans "Apercu avant impression"..
Tu travail avec VBA ou VB.. ?
0
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011
1 oct. 2010 à 21:18
vb
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 oct. 2010 à 21:24
Grrr.. Quel VB ?
0
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011
1 oct. 2010 à 21:27
excuse moi vb6
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 oct. 2010 à 22:14
C'est rien
En premier je pensais que tu était sur Excel et j'avais prépare le code en ce sens.
Tu ouvre un nouveau projet
dans la forme tu colle un bouton, un label.
une list avec la propriété Style à 1 (option)
et tu colle le code...
Option 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

A+
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 oct. 2010 à 22:18
J'ai oublié..
Juste pour savoir s'il y a une imprimante
If Printers.count>0 then 'Il y a une (ou des) imprimante(s)

La fonction NbPrinter n'est plus nécessaire.
A+
0
eridyms Messages postés 26 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 16 février 2011
1 oct. 2010 à 23:30
Excellent....
très heureux et très émue pour l'attention que tu m'a accorder...merci j'ai bien envie de garder le contact avec toi..
eridyms..
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 oct. 2010 à 11:38
En fait, si tu avais commencé par faire une SIMPLE recherche de code avec le mot "imprimante", tu aurais trouvé des exemples tout fait.

Prends cette habitude, le forum ne doit être là qu'en cas de problème insurmontable, pas pour remplacer l'aide de VB.
0
Rejoignez-nous