Empêcher l'impression directe d'un formulaire

chajmi

XLDnaute Occasionnel
Bonjour


Dans un classeur je lance l’impression d’un bordereau à l’aide d’un bouton et d’une macro, laquelle réalise un certain nombre d’autres opérations (incrémentation d’un numéro, duplication et changement de nom de la feuille, création d’un pdf, effacement des données pour un nouveau bordereau vierge …)

Je veux que les opérateurs ne puissent imprimer que par le bouton (pour ne pas contourner le reste des opérations réalisées par la macro)

On ne peut pas bloquer le menu « imprimer », mais on peux lancer une macro qui agit avant d’imprimer.

Voilà ce que j’ai trouvé sur le sujet :

A mettre dans un module normal :

Public Flag As Boolean


A mettre dans ThisWorkbook

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If Flag = False Then Cancel = True

End Sub



Par contre il faut que je modifie ma macro Sub CreationBordereauCouture() dans le module 1 de mon classeur joint.
Qui peut m’aider à faire fonctionner l’ensemble ?

Merci d’avance
 

Pièces jointes

  • BORDEREAU essai.xlsm
    285.3 KB · Affichages: 19

Paf

XLDnaute Barbatruc
bonjour,

Si Flag = False, on ne peut lancer d'impression.

Si on veut imprimer, il faut donc passer Flag à true avant de lancer l'impression, puis remettre Flag à False pour empêcher les impressions manuelles.


VB:
 Flag = True
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True , _
  IgnorePrintAreas:=False
  Flag = False

A+
 

Statistiques des forums

Discussions
311 709
Messages
2 081 754
Membres
101 812
dernier inscrit
trufu