Sélection de l'imprimante avec VB excel 2010

Fermé
tarbais - 27 mars 2011 à 17:29
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 28 mars 2011 à 08:12
Bonjour,


j'ai écris une macro VB sur excel 97 qui sélectionne l'imprimante pdf, imprime puis sélectionne l'imprimante papier puis imprime. Depuis que je suis passé à la version 2010, je ne sais plus comment faire, la sélection de l'imprimante pdf, puis de l'imprimante papier ne fonctionne plus !

cdlt
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
28 mars 2011 à 00:44
Avec le texte de la macro, il serait certainement plus facile de comprendre ce qui ne va pas.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
28 mars 2011 à 08:12
Bonjour,
Lister les imprimantes disponibles...
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

Le nom des imprimantes est dans le tableau ImprEnum()

pour imprimer sur une imprimante spécifique..

Sheets("Feuil1").PrintOut Copies:=1, ActivePrinter:= _
             ImprEnum(x), Collate:=True

A+
0