Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

problème pour lister les imprimantes dans une combobox

Oranger

XLDnaute Occasionnel
Bonjour,
Mon but est d'imprimer toutes les pages d'un classeur en 1 fois, mais je souhaiterais aussi pourvoir choisir l'imprimante sur laquelle imprimer ainsi que la couleur. J'ai fais une recherche sur internet et j'ai trouvé un code que j'ai adapté à mon projet sur le site: Choix imprimante en VB - VB/VBA/VBS - Programmation - FORUM HardWare.fr

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

Private Sub UserForm_Initialize()
Dim PrinterEnum() As Long, Impr() As String
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 Impr(1 To Returned)
For I = 1 To Returned
Impr(I) = Space$(lstrlenA(PrinterEnum(I * 5 - 5)))
lstrcpyA Impr(I), PrinterEnum(I * 5 - 5)
Next I
ComboBox1.List = Impr
End Sub

Cependant le code ne me ramène pas toutes les imprimantes. J'ai l'impression que c'est à cause des anti-slash. Le nom des imprimantes qui n'apparaissent pas sont de la forme suivante par exemple:
\\abcsps01\abcP0221 bureau.

je ne comprend pas entièrement ce code. Quelqu'un pourrait il m'expliquer celui-ci, et comment faire pour lister les imprimantes même celles avec des anti-slash.

Je joins un exemple de mon projet.

Merci d'avance à tous ceux qui prendront du temps pour m'aider.
 

Pièces jointes

  • Classeur exemple.xls
    47.5 KB · Affichages: 51
  • Classeur exemple.xls
    47.5 KB · Affichages: 63
  • Classeur exemple.xls
    47.5 KB · Affichages: 65
Dernière édition:

stefan373

XLDnaute Occasionnel
Re : problème pour lister les imprimantes dans une combobox

Bonsoir oranger et le forum,

Attention il y a un espace de trop après Imprimer dans la macro delete et cela n'efface pas le menu rajouté.

Pourriez-vous le retirer de votre fichier joint, pour éviter des problèmes aux membres.
Merci.

A +
 

Staple1600

XLDnaute Barbatruc
Re : problème pour lister les imprimantes dans une combobox

Bonsoir

Voici un autre code (plus à mon goût ) pour lister les imprimantes
VB:
Sub a()
'Liste les imprimantes avec WMI
Dim strComputer, strResults
Dim objWMIService, colPrinters, objPrinter, strPrinterType
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
For Each objPrinter In colPrinters
strPrinterType = IIf(objPrinter.Attributes And 16, "Réseau", "Local")
strResults = strResults & objPrinter.Name & "| " & strPrinterType & IIf(objPrinter.Default, "| Par défaut", vbNullString) & vbCrLf
Next
MsgBox strResults
End Sub

Vois comment tu peux t'en servir pour ton problème.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…