Je souhaiterais qu'un même état soit systématiquement imprimé sur 2 imprimantes différentes. Comment faire ?
Le code
Depuis Access 2002, il est possible de manipuler directement l'imprimante associée à un état, grâce à la méthode Report.Printer. C'est ce que fait le code ci-dessous (à recopier dans un module standard d'Access).
' ---
' IMPRESSION D'UN ETAT SUR 2 IMPRIMANTES
' ---
Sub DoubleImpression( _
ByVal strNomEtat As String, _
ByVal strImprimante1 As String, _
ByVal strImprimante2 As String)
' On ouvre l'état en mode caché
On Error GoTo DoubleImpressionErr
DoCmd.OpenReport strNomEtat, acViewPreview, , , acHidden
' On change l'imprimante de l'état, puis on imprime
Set Reports(strNomEtat).Printer = _
Application.Printers(strImprimante1)
DoCmd.OpenReport strNomEtat, acViewNormal, , , acHidden
' Idem avec l'imprimante 2
Set Reports(strNomEtat).Printer = _
Application.Printers(strImprimante2)
DoCmd.OpenReport strNomEtat, acViewNormal, , , acHidden
' On ferme l'état
DoCmd.Close acReport, strNomEtat, acSaveNo
Exit Sub
DoubleImpressionErr:
MsgBox "Erreur d'impression : " & Err.Description, _
vbCritical, "Impression"
Exit Sub
End Sub
L'état doit être ouvert avant qu'on puisse modifier son imprimante. D'où le double OpenReport pour chaque impression : le premier pour ouvrir l'état, le second pour l'imprimer.
Utiliser le code
Pour tester la procédure DoubleImpression :
- Faites apparaître la fenêtre Exécution
(CTRL + G).
- Tapez :
DoubleImpression "Nom de votre état", "Nom de l'imprimante 1", "Nom de l'imprimante 2"
- Puis validez par la touche
[Entrée].
L'idéal est ensuite de placer cette ligne de test dans l'événement
Sur clic d'un bouton de commande, par exemple.
Les noms d'imprimantes sont ceux que vous trouvez dans votre panneau de configuration Windows. Il peut s'agir d'imprimantes locales ou réseau comme
\\serveur\HP LaserJet.
Derniers commentaires