Macro impression page

2 réponses
Avatar
Mathieu
Bonjour,

En bas d'un formulaire, j'ai un bouton "Imprimer la feuille" lié Í  une macro :

Sub Dispositif_impression()
'
' Dispositif_impression Macro
' Impression du formulaire Dispositif
'

'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub

Je souhaiterais que si le bouton est cliqué (et donc l'impression lancée) que la cellule A52 se colore en vert et écrit le texte "formulaire imprimé".

Auriez-vous une idée de comment procéder ?
Avec mes remerciements anticipés,
Bien cordialement,

2 réponses

Avatar
MichD
Le 23/02/22 Í  06:45, Mathieu a écrit :
"formulaire imprimé"

Bonjour,
N.B. Ce qui suit n'a pas été testé!
Dans le ThisWorkbook du projetVBA de ton classeur, copie ceci :
'Lorsque l'impression est terminée, la procédure appelle la
'procédure "Après_impression" pour remettre la cellule A52
'tel qu'elle était avant de lancer l'impression.
'Si tu préfères, tu peux attacher la macro Í  un bouton dans
'ton formulaire
-------------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Après_impression
End Sub
-------------------------------------------------
Dans un module standard : copie ceci :
'Déclaration des variables dans le haut du module.
Public Couleur As Long
Public V As Variant
Public Largeur As Double
'-------------------------------------------------
Sub Imprimer_Les_Feuilles_Selectionnees()
Dim Sh As Worksheet
Application.EnableEvents = False
For Each Sh In ThisWorkbook.Worksheets
With Sh
Couleur = .Range("A52").Interior.Color
V = .Range("A52").Value
Largeur = .Range("A52").EntireColumn.Width
.Range("A52").Value = "formulaire imprimé"
.Range("A:A").EntireColumn.AutoFit
.Range("A52").Interior.Color = vbGreen
.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:úlse
End With
Next
Application.EnableEvents = True
End Sub
'-------------------------------------------------
Sub Après_impression()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With Sh
.Range("A52").Value = V
.Range("A52").Interior.Color = Couleur
.Range("A52").ColumnWidth = Largeur
End With
End Sub
'-------------------------------------------------
MichD
Avatar
MichD
Oublie cette section, elle n'est pas applicable, je voulais utiliser
l'événement "AfterPrint" mais elle n'existe pas. Il y a seulement
BeforeSave or AfterSave. Désolé.
-------------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Après_impression
End Sub
-------------------------------------------------
MichD