Définir l'imprimante
Comment définir l'imprimante à utiliser
Avant d'imprimer certains états, on peut souhaiter utiliser une imprimante particulière. Comme par exemple une imprimante laser, imprimante jet d'encre couleur ou encore une imprimante PDF.
Le code ci-dessous permet cela et pour définit l'imprimante, on utilisera :
ChoixImprimante "Nom d'imprimante"
Ce nom d'imprimante sera celui qui est affiché par Windows via le menu Démarrer > Paramètres > Périphériques > Imprimantes et scanneurs.
Dans Access, on peut utiliser la fonction :
fnActualPrinter()
Code à placer dans le module général :
Option Compare Database
Option Explicit
'// déclarations
Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" ( _
                                            ByVal lpszSection As String, _
                                            ByVal lpszKeyName As String, _
                                            ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
                                     ByVal hwnd As Long, _
                                     ByVal wMsg As Long, _
                                     ByVal wParam As Long, _
                                     lParam As Any) As Long
Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_WININICHANGE = &H1A
Public Function SetDefaultPrinter(objPrn As Printer) As Boolean
    '// appel système pour définir l'imprimante
    Dim X As Long, sztemp As String
    sztemp = objPrn.DeviceName & "," & objPrn.DriverName & "," & objPrn.Port
    X = WriteProfileString("windows", "device", sztemp)
    X = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
End Function
Public Function ChoixImprimante(NomImprimante As String)
    Dim prt As Printer
    Dim bOk As Boolean
    bOk = False
    For Each prt In Printers
        If prt.DeviceName = NomImprimante Then
            SetDefaultPrinter prt
            bOk = True
            DoEvents
            Exit For
        End If
    Next
    If Not bOk Then MsgBox "Nom d'imprimante pas trouvée !"
End Function
Public Function fnActualPrinter() As String
    '/ fonction qui retourne le nom de l'imprimante actuelle
    fnActualPrinter = Application.Printer.DeviceName
End Function
      Catégorie :  - Modules
        Page lue 2667 fois