Autres Empêcher l'enregistrement par Menu

chaelie2015

XLDnaute Accro
Bonjour FORUM

Besoin d'un petit coup de main.

Ma question est simple,
Est-il possible d'empêcher l'enregistrement par le menu de l'excel ( enregistrer et enregistrer sous)
l'enregistrement se fait par un bouton dans ma feuille.


Merci d'avance.
 

Pièces jointes

  • CHARLIE Enregistrement.xlsm
    19.7 KB · Affichages: 9
Dernière édition:
Solution
Re,

Dans ThisWorkBook
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not Flag Then
MsgBox "Sauvegarde uniquement avec le bouton dédié!", vbCritical
Cancel = True
End If
End Sub
Dans le code du CommandButton
VB:
Private Sub CommandButton1_Click()
Flag = True
ActiveWorkbook.Save
Flag = False
End Sub
Dans un module standard
VB:
Public Flag As Boolean
EDITION: Même idée que _Thierry que je salue au passage ;)

TooFatBoy

XLDnaute Barbatruc
Désolé, je ne comprends pas mieux...(normal, me diras-tu, puisque ça reprend des phrases précédentes sans rien expliquer)

Que veux-tu que je "constate" en lisant et relisant ce fil ?
Je pensais que ce forum était là pour aider, mais là ça ne m'aide pas à comprendre. Dommage.

Merci quand même.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, chaelie2015, _Thierry, jmfmarques, Marcel32

je ne doute pas une seule seconde de ce que @Staple1600 et @_Thierry ont, eux, parfaitement compris ce mécanisme au demeurant très simple. :)
Personnellement, sans doute que le confinement amoindrit ma réactivité.
Car si j'étais moi, j'aurai du ou pu évoquer les points suivants:
1) Si j'étais l'utilisateur d'un classeur "liberticide", illico presto, j'ouvre celui-ci sans activer les macros et inhibe tout ce qui m’empêche d'utiliser mon Excel à 100% de ses capacités
2) Si je fus moi, et qu'un collègue lambda et balbutiant dans le monde d'Excel eut été destinataire d'un classeur façonné par mes soins, j'aurais pris le temps de le former à l'utilisation de celui-ci plutôt que d'attenter à l'intégrité de son Excel ;)
(Euh, le moi d'aujourd’hui incite fortement le moi d'hier à réviser ses conjugaisons ;))
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @ tous

S'il eut fut fait froid, nous fusse réchauffé en lisant ce fil !

Pour le synopsis compréhensif en trois phases pour Marcel32 :

1)
Chaelie2015 voulait empêcher l’usage des boutons standard « Save » ou « Save As » par l’usage de la macro évènementielle : Workbook_BeforeSave, mais uniquement depuis son propre bouton et sa programmation prévue. Hélas, l’évènementielle ne laissait plus sauver le classeur.

2) Moi-même & Staple1600 avons proposé la même méthode en utilisant un « Verrou » Boolean public à tout le classeur qui désactiverait le Cancel de Workbook_BeforeSave si initialisé à True dans le code de Chaelie2015.

3) Jmfmarques, dans un souci d’économie ;) , est ensuite venu proposer une solution intéressante qui consiste à désactiver les macros évènementielles avec Application.EnableEvents = False dans le code de Chaelie2015 de son bouton Save (et de le remettre à True en sortie) pour que l’évènement Workbook_BeforeSave soit neutralisé provisoirement et n’empêche pas le bouton de Chaelie2015 de sauver son classeur.

Voilà, c’eusse fusse dit, et nous fîmes un peu d’air frais !

Et comme Staple1600, parfois on perd plus de temps à faire du "faux" blindage par VBA (car un utilisateur avancé et mal-intentionné aura toujours un moyen de trafiquer) qu'à expliquer clairement à l'utilsateur final ce qu'il doit faire pour l'utilisation correcte du classeur...

Bien @ vous
@+Thierry
 

jmfmarques

XLDnaute Accro
Merci _Thierry d'avoir ainsi tenté (j'espère avec succès) d'exposer à Marcel32 par d'autres mots que les miens ce que mes phrases exposaient de manière concise et technique. J'ai probablement une manière d'utiliser notre langue qui n'est pas celle de Marcel. L'un de nous deux devrait changer de vocabulaire et ce ne sera pas moi :)
 

Staple1600

XLDnaute Barbatruc
Re

•>_Thierry
C'est pas une histoire de compteur
Mais de nostalgie.
Nostalgie de l'XLD d'antan...
L'époque où il y a avait une vraie émulation entre XLDnautes et où on prenait le temps de se saluer mutuellement.
Désolé d'être en mode "slow movement" et d'avoir des accès de nostalgie ;)
 

jmfmarques

XLDnaute Accro
A marcel32
quand même !
je ne comprends toujours pas comment ça empêche la sauvegarde par menu. Mais ce n'est pas grave, je resterai sans avoir compris.
tout simplement car est alors déclenché l'évènement BeforeSave dont le paramètre Cancel, passé à True, fait "jeter" l'utilisateur, sans sauvegarder.
Et quand clic sur le bouton : l'évènement BeforeSave n'est tout simplement pas déclenché, puisque inhibé du fait de la propriété EnableEvents passée à false.
Ce qui fait (sans besoin d'un dessin à l'appui) que l'on ne peut sauvegarder qu'en cliquant sur le bouton.
Il n'y a rien de très "sorcier" dans un mécanisme aussi élémentaire.

Ceci étant, Marcel32, ma réaction aurait été très différente si, au lieu de faire comme tu l'as fait ("...je ne vois pas en quoi ... etc..."), tu avais dit avoir des difficultés à comprendre le mécanisme et demandé une aide en vue de le comprendre.
En d'autres termes : c'est comme dans les auberges espagnoles : chacun y trouve ce qu'il apporte (et la moitié de mon sang l'est, espagnole, l'autre moitié étant corse) :cool:
 

Discussions similaires