Message avant impression

judikael

XLDnaute Occasionnel
Bonjour

Afin de lutter contre l'impression intempestive par mes collègues de nombreux documents excel que je crée dans le service, est il possible d'avoir un message qui s'affiche au moment où ils demandent l'impression ?

J'explique un peu ce que j'aimerais :

La personne clique sur le bouton "imprimer" ou fait "Fichier" puis "imprimer", apparaît alors une box qui dit "Etes vous sûr qu'il est vraiment nécessaire d'imprimer ce document ?" et dessous 2 boutons : "Oui" et "Non"

si la personne clique sur Oui, alors le processus d'impression se poursuit
si "Non" alors il retourne au fichier et annule le process d'impression.



J'espère que cela est jouable mais je suis désespéremment nul en macro

Merci d'avance

PP
 

tactic6

XLDnaute Impliqué
Re : Message avant impression

Bonjour
si ton bouton est une macro alors:
Code:
Sub imprimer()
If MsgBox("Voulez vous Imprimer ce Document ?", vbYesNo) = vbYes Then _
...ta macro ...
end if
end sub
sinon les pros te répondront surement
 

Staple1600

XLDnaute Barbatruc
Re : Message avant impression

Bonjour


• En mettant le code dans ThisWorkBook
(Quand ton fichier Excel est ouvert tu fais ALT+F11 et à gauche de ton écran, tu dois voir ThisWorkBook,
là tu cliques-droit et tu colles le code VBA ci-dessous.)

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
reponse= _
MsgBox _
("Etes vous sûr qu'il est vraiment nécessaire d'imprimer ce document ?", _
vbYesNo + vbCritical, "Avertissement")
If reponse = 1 Then 
[B]ActiveSheet.PrintPreview
[/B][COLOR=SeaGreen]'remplacer par ActiveSheet.PrintOut
'pour lancer l'impression de la feuille active[/COLOR] 
ActiveSheet.PrintPreview
Else
Cancel = True
End If
End Sub
La même chose mais avec comme bouton OUI /Annuler
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
reponse = _
MsgBox _
("Etes vous sûr qu'il est vraiment nécessaire d'imprimer ce document ?", _
vbOKCancel + vbCritical, "Avertissement")
If reponse = vbOK Then
ActiveSheet.PrintPreview [COLOR=Green]'ici aperçu avant Impression[/COLOR]
'[COLOR=Green]  ActiveSheet.PrintOut 'pour imprimer[/COLOR]
Else
Cancel = True
End If
End Sub
PS: il faut mettre une des deux macros (pas les deux)

Edition: bonjour JCGL désolé pour la collision
(et bravo ton ton nouveau grade de Barbatruc ;) )
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Message avant impression

Bonjour à tous,

Peux-tu essayer avec ce fichier ?

Code:
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse
Reponse = MsgBox("Etes vous sûr qu'il est vraiment nécessaire d'imprimer ce document ?", vbYesNo, "Pensez aux économies ;-)")
If Reponse = vbNo Then Cancel = True
If Reponse = vbYes Then ActiveSheet.PrintOut
End Sub


A+

Edition : Salut Staple
 
Dernière édition:

Excel_lent

XLDnaute Impliqué
Re : Message avant impression

Bonsoir à tous et aux autres.

autre
Code:
Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse%
Reponse = MsgBox("Etes vous sûr qu'il est vraiment nécessaire d'imprimer ce document ?", _
  vbYesNo, "Pensez aux économies ;-)")
If Reponse = 7 Then Cancel = True Else ActiveSheet.PrintOut 'Reponse = 6 pour ce cas
End Sub
Staple, qui a décrit la démarche, aura une réponse (dim Reponse% pour Dim Reponse as Byte).
 

Staple1600

XLDnaute Barbatruc
Re : Message avant impression

RE à tous

-->judikael: reste a vérifier ce qui se passe avec un clic-droit sur le fichier Excel -> [Imprimer]

Edition: je viens de tester, le message d'alerte macro s'affiche, et si je réponds sur NON
l'impression se lance !! :(

La solution ne viendra pas d'Excel dans ce cas là ...
(Tu peux (mais cela peut être mal percu par tes utilisateurs) désactiver le clic-droit en allant trifouiller la BDR)

_____________________
--> JCGL et Excel_lent

L'aide VBA dit ;)

MsgBox, fonction


Affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton, puis renvoie une valeur de type Integer qui indique le bouton choisi par l'utilisateur.
LA FAQ du Forum dit:

3 - Integer (%)
donc qui a finalement raison ?

JCGL ou Excel_Lent ? ;)
 
Dernière édition:

Excel_lent

XLDnaute Impliqué
Re : Message avant impression

Re,

JC me reprenait, à juste raison, sur la notation (différence entre & et %).

Valeurs renvoyées par MsgBox 1, 2, 3 ... 7

Avec cela, on peut se contenter d'une variable de type Byte (entier de 0 à 255)
mais si on ne lésine pas sur les moyens (mémoire oblige certaine fois) on peut déclarer la variable en type Integer (qui peut le plus, peut le moins) voire Long ...
 

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01