Recherche
Recherche
Les mémos
Je débute...
Visites

 999662 visiteurs

 1 visiteur en ligne

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 : Les mémos - Modules
Page lue 194 fois