VBA Excel Imprimer avec Imprimante par défaut

Résolu/Fermé
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 - 3 févr. 2012 à 17:25
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 - 8 févr. 2012 à 18:24
Bonjour,

Cela fait une journée que je cherche comment imprimer avec l'imprimante par défaut et non avec la derniere sélectionné. J'ai trouvé cela mais j'ai un souci avec GetProfileString, j'ai un message d'erreur qui me dit Compile error: Sub or Function not defined.

Si quelqu'un a une idée de pourquoi cela ne marche pas ou une autre méthode je suis ouvert a toute solution.

Merci d'avance


Sub ImprimerSurDéfaut()


ActivePrinter = ImprimanteWindows
ActiveSheet.PrintOut

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)
r = 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



A voir également:

1 réponse

Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 6
8 févr. 2012 à 18:24
Voici la solution que j'ai trouvé.

Sub Macro1()

Dim oShell As Object
Dim sRegval, sdefault

Set oShell = CreateObject("WScript.Shell")
sRegval = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
sdefault = ""
sdefault = oShell.RegRead(sRegval)
sdefault = Left(sdefault, InStr(sdefault, ",") - 1)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
sdefault, Collate:=True

End Sub
1