OVH Cloud OVH Cloud

BeforePrint...

8 réponses
Avatar
HD
Bonjour,

Je sais qu'il est possible de lancer une macro avant l'impression
(Workbook_BeforePrint) mais Est-il possible de lancer une macro tout de
suite après cette impression?

Merci d'avance pour votre aide.
--
@+
HD

8 réponses

Avatar
garnote
Salut HD,

Et si la macro était lancée pendant l'impression,
serait convenable ?

Sub Imprime()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Macro
End Sub

Sub Macro()
For i = 1 To 10
s = s + Cells(i, 1)
Next i
MsgBox s
End Sub

Serge

"HD" a écrit dans le message de news:
OzMpdht#
Bonjour,

Je sais qu'il est possible de lancer une macro avant l'impression
(Workbook_BeforePrint) mais Est-il possible de lancer une macro tout de
suite après cette impression?

Merci d'avance pour votre aide.
--
@+
HD




Avatar
HD
Et si la macro était lancée pendant l'impression,
serait convenable ?


Non... En fait, j'ai certaines cellules jaunes. Lors de l'impression je veux
que ces cellules deviennent incolores puis quelles se recolorisent après
l'impression. Il me faudrait donc un truc du style:

sub Workbook_beforeprint
enlève_couleur
end sub

sub Workbook_afterprint
recolorise
end sub

--
@+
HD

Avatar
garnote
Salut HD,

Tu pourrais tester cette approche de brousse
avant de l'adopter !
S'il n'y a pas des millions de cellules jaunes,
à ne pas imprimer, ça devrait se faire en un temps raisonnable.
Tu commences par sélectionner
la plage rectangulaire contenant tes cellules
jaunes (pas besoin de sélectionner chaque
cellule jaune) et tu appelles cette macro :

Sub Imprime()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
n = ActiveSheet.Name
Sheets(n).Copy Before:=Sheets(1)
Set ici = Selection
For Each c In ici
If c.Interior.ColorIndex = 6 Then c.Interior.ColorIndex = xlNone
Next
ActiveWindow.ActiveSheet.PrintOut Copies:=1, Collate:=True
ActiveSheet.Delete
Sheets(n).Activate
Application.DisplayAlerts = False
End Sub

Serge

"HD" a écrit dans le message de news:
u6tmJBv#
Et si la macro était lancée pendant l'impression,
serait convenable ?


Non... En fait, j'ai certaines cellules jaunes. Lors de l'impression je
veux

que ces cellules deviennent incolores puis quelles se recolorisent après
l'impression. Il me faudrait donc un truc du style:

sub Workbook_beforeprint
enlève_couleur
end sub

sub Workbook_afterprint
recolorise
end sub

--
@+
HD





Avatar
michdenis
Bonjour HD,

As-tu essayé ceci :

'---------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)

Ta macro
Impression
Autre Macro

Cancel = True


End Sub
'---------------------------------



Salutations!



"HD" a écrit dans le message de news:OzMpdht%
Bonjour,

Je sais qu'il est possible de lancer une macro avant l'impression
(Workbook_BeforePrint) mais Est-il possible de lancer une macro tout de
suite après cette impression?

Merci d'avance pour votre aide.
--
@+
HD
Avatar
HD
Salut HD,
Salut Serge,


Tu pourrais tester cette approche de brousse
avant de l'adopter !
S'il n'y a pas des millions de cellules jaunes,
à ne pas imprimer, ça devrait se faire en un temps raisonnable.
Tu commences par sélectionner
la plage rectangulaire contenant tes cellules
jaunes (pas besoin de sélectionner chaque
cellule jaune) et tu appelles cette macro :
Désolés on ne s'est pas compris.


Je ne cherche pas une macro pour coloriser ou "décoloriser" une plage de
cellule... je cherche la possibilité de faire un événement après une
impression... quelque chose qui ressemblerait à un "Workbook_afterprint",
propriété qui n'existe malheureusement pas :(
--
@+
HD

Avatar
ru-th
Salut

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Feuil1" Then
Application.EnableEvents = False
TaMacroColorise
ActiveSheet.PrintOut
TaMacroDecolorise
Application.EnableEvents = True
Cancel = True
End If
End Sub

a+
rural thierry
"HD" a écrit dans le message de news:
c1hng2$1v29$
Salut HD,
Salut Serge,


Tu pourrais tester cette approche de brousse
avant de l'adopter !
S'il n'y a pas des millions de cellules jaunes,
à ne pas imprimer, ça devrait se faire en un temps raisonnable.
Tu commences par sélectionner
la plage rectangulaire contenant tes cellules
jaunes (pas besoin de sélectionner chaque
cellule jaune) et tu appelles cette macro :
Désolés on ne s'est pas compris.


Je ne cherche pas une macro pour coloriser ou "décoloriser" une plage de
cellule... je cherche la possibilité de faire un événement après une
impression... quelque chose qui ressemblerait à un "Workbook_afterprint",
propriété qui n'existe malheureusement pas :(
--
@+
HD





Avatar
HD
Effectivement ça fonctionne du tonnerre !!!

Encore un seul problème... Si l'utilisateur n'imprime pas une seule feuille
mais fait une impression du classeur entier ?

Comment savoir si l'utilisateur a fait un ActiveSheet.PrintOut ou un
ActiveWorkbook.PrintOut ?

--
@+
HD
Avatar
ru-th
re-

tu peux toujours rajouter un test supplémentaires sur le nombre de feuilles
selectionnés
if ActiveWindow.SelectedSheets.Count>1 then exit sub (par exemple)

a+
rural thierry

"HD" a écrit dans le message de news:
#5wKwP7#
Effectivement ça fonctionne du tonnerre !!!

Encore un seul problème... Si l'utilisateur n'imprime pas une seule
feuille

mais fait une impression du classeur entier ?

Comment savoir si l'utilisateur a fait un ActiveSheet.PrintOut ou un
ActiveWorkbook.PrintOut ?

--
@+
HD