Utiliser une macro Excel pour choisir une imprimante - VB/VBA/VBS - Programmation
Marsh Posté le 02-02-2004 à 03:30:19
Bonjour, 
 
Voila une solution qui pourrait peut etre t'aider, ca va lister tutes les imprimantes exustante sur l'ordinateur. Tu n'as plus qu'e selectionner la bonne imprimante par son nom: 
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 Function Imprimantes() 
  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 
  If Needed = 0 Then Exit Function 
  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 
  Imprimantes = Impr 
End Function 
Sub ListeImprimante() 
Dim Impr 
For Each Impr In Imprimantes 
MsgBox Impr 
Next 
End Sub 
 
Marsh Posté le 30-01-2004 à 17:44:44
J'ai un fichier Excel contenant une macro me permettant de définir les paramètres d'impression et notamment l'imprimante destinataire du document. Cette macro fonctionnait sur des machines avec W98 et ne fonctionne plus avec W XP Pro. Le débugger me signale que le port d'imprimante Ne0x n'est pas le bon celui ci varie d'une machine à l'autre en fonction de l'ordre dans lequel les imprimantes réseaux ont été installé sur la machine. Y'a t'il une solution pour trouver automatiquement le nom ou l'adresse de l'imprimante désirée.