user_mobilelogo

 

Le VBA ne reconnaît que l'imprimante active. L'imprimante active est la dernière utilisée et non l'imprimante par défaut.

Il faut passer par des API. et ce n'est pas si simple ! Voici donc une macro assortie d'une fonctions, le tout écrit par Geo qui permet d'imprimer sur l'imprimante par défaut et remet l'imprimante active précédente.

L'inconvénient c'est qu'elle imprime tout le document sans autre question.

Sub ImprimerSurDéfaut()
'macro écrite par Geo
Dim MémoireImpr As String
  MémoireImpr = ActivePrinter
  ActivePrinter = ImprimanteWindows
  ActiveDocument.PrintOut
  ActivePrinter = MémoireImpr
End Sub

 

Private Function ImprimanteWindows()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim s1 As String
Dim r As Long
Dim Buffer As String
Dim NomImpr As String
Dim Spool As String
Dim Port As String
Buffer = Space(8192)
= GetProfileString("Windows""Device""", Buffer, Len(Buffer))
Debug.Print Buffer i = InStr(Buffer, Chr(0))
If i > 0 Then
  s1 = Left(Buffer, i - 1)
  j = InStr(s1, ",")
  k = InStr(j + 1, s1, ",")
  NomImpr = Left(s1, j - 1)
  If k > j Then
    Spool = Mid(s1, j + 1, k - j - 1)
    Port = Mid(s1, k + 1)
  End If
Else
 ' pas d'imprimante par défaut ?
   NomImpr = ""
End If
ImprimanteWindows = NomImpr & " on " & Port
End Function

Statistiques

Aujourd'hui928
Hier1781
Cette semaine6273
Ce mois41872
Total depuis 200418151664

24
visiteurs actuellement en ligne

28 mars 2024