Sélection de l'imprimante avec VB excel 2010
tarbais
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
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
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
2 réponses
-
Avec le texte de la macro, il serait certainement plus facile de comprendre ce qui ne va pas.
-
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+