Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Empêcher l'enregistrement par Menu

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 😉
Bonjour le fil, chaelie2015

•>chaelie2015
Penche un peu la tête
Non pas vers le bas
Mais vers la droite de ton écran 😉
Oui voila dans les Discussions similaires 😉

Bonjour le fil, JM
Apres avoir penché un peu ma tête vers la droite 😀😉 de mon LAPTOP, j'ai pu faire un code mais il ne foctionne pas avec le bouton qui est dans la feuille.
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
MsgBox "Vous ne pouvez pas enregistrer, clic sur le bouton dans la feuille"
End Sub
Code:
Sub Enregistrer_sous()
Dim chemin As String, fichier As String
Application.ScreenUpdating = False

         If Range("I2") = "" Or Range("K2") = "" Then
         Cancel = True
         MsgBox "Veuillez rensigner le N° et/ou la Date du rapport"
         Else

chemin = ThisWorkbook.Path
fichier = chemin & "\" & Range("I4") & ".xlsm"
ActiveWorkbook.SaveAs Filename:=fichier
End If
Application.ScreenUpdating = True

End Sub
A+😉
 

Pièces jointes

Bonsoir @chaelie2015 @Staple1600

Bien vu de pencher la tête lol !!!

Pour bypasser le Cancel = True du Workbook_BeforeSave(

Je crois qu'il y a un truc avec UserInterface Only ou un truc de ce genre... Mais pas certain !
Moi tout simplement je mettrai un Boolean Public à tout le Classeur que tu initialiserais à True uniquement depuis ton Enregistrer_sous... Et donc le Cancel = True deviendrait Cancel = MonBooleanPublic ...

Il faut le déclarer Public MonBooleanPublic as Boolean dans un module normal au top.


Bonne soirée
@+Thierry
 
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 😉
 
Re

Mon code est basé sur l'utilisation d'un CommandButton
Si tu veux utiliser une image, c'est simple
Il suffit d'affecter cette macro (dans le module standard)
VB:
Sub Code_Pour_Image()
Flag = True
ActiveWorkbook.Save
Flag = False
End Sub
Le reste du code du message#8 devant être conservé aux mêmes endroits.
 
Bonjour Staple1600, chaelie2015 et _Thierry
La crise économique qui se prépare m'incite à faire des économies tous azimuts, y compris de la booléenne flag.
Il suffit à cette fin de faire précéder (au clic du commandbutton) l'instruction de sauvegarde par un simple application.enableevents = false et de la rétablir à true tout de suite après.
on shunte ainsi l'évènement beforesave lorsque l'on clique le bouton de commande.

Ouais ... je deviens radin en période de crise.😛
 
Bonjour,
Il suffit à cette fin de faire précéder (au clic du commandbutton) l'instruction de sauvegarde par un simple application.enableevents = false et de la rétablir à true tout de suite après.
En quoi un EnableEvents=False dans sa macro de sauvegarde empêche-t-il de sauvegarder le classeur de façon traditionnelle ?
Je ne vois pas bien le fonctionnement du truc. 🙁
 
Je ne vois pas bien le fonctionnement du truc
Désolé pour toi, que tu ne le voies pas bien
Tu devrais peut-être tout relire, mais plus attentivement, de sorte à comprendre que :
- le clic sur le bouton court-circuite ainsi l'évènement Beforesave
- un clic sur le menu de sauvegarde, lui, te "jette".
Bref ...
Bon réveil.

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. 🙂
 
Dernière édition:
T'as vraiment besoin d'être agressif de la sorte ?
Tu ne peux pas simplement m'expliquer comment ça fonctionne ton truc ? Comment tu fais pour empêcher l'enregistrement par le menu en mettant un EnableEvents à False dans sa macro ?
 
Tu ne peux pas simplement m'expliquer comment ça fonctionne ton truc ?
je ne vois pas comment l'expliquer mieux que déjà fait.
Pour mémoire :
et pour compléter ton interrogation, à savoir :
En quoi un EnableEvents=False dans sa macro de sauvegarde empêche-t-il de sauvegarder le classeur de façon traditionnelle ?
C'est précisément ce que font les instructions mises dans l'évènement BeforESave, non ?

Tu aurais pu éviter ton intervention. il te suffisait de faire comme dit et de constater.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
265
Réponses
15
Affichages
299
Réponses
4
Affichages
197
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
208
Réponses
4
Affichages
135
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…