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