OVH Cloud OVH Cloud

Fermeture interdite

2 réponses
Avatar
STEN83
Bonjour, je sais que la question à déjà été posée mais je ne retrouve pas.
J'aimerai interdire la fermeture d'un classeur via la croix et obliger
l'utilisateur de le faire par un bouton macro que j'ai placé sur la feuille.
Merci de votre aide.
--
Le partage du savoir contribue à l'amélioration de la condition humaine!
Merci à tous

2 réponses

Avatar
RGI
Bonjour

Avec ce code dans un module standard

'Déclaration des API dans le haut du module standard.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, _
ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, _
ByVal fEnable As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) _
As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Private Const SC_CLOSE As Long = &HF060


Sub Desactive_Bouton_Fermerture_Excel()
Dim myhWnd As Long, hMenu As Long
'Supprime la petite croix
myhWnd = FindWindow("XLMAIN", Application.Caption)
hMenu = GetSystemMenu(myhWnd, 0)
DeleteMenu hMenu, SC_CLOSE, 0&
DrawMenuBar myhWnd
'désactive la commande "quitter" du menu Fichier
Application.CommandBars("Worksheet Menu Bar") _
.Controls("&Fichier").Controls("&Quitter").Enabled = False

End Sub

Sub active_Bouton_Fermerture_Excel()
Dim myhWnd As Long, hMenu As Long
'Remet la petite croix
myhWnd = FindWindow("XLMAIN", Application.Caption)
hMenu = GetSystemMenu(myhWnd, 1)
DrawMenuBar myhWnd
'active la commande "quitter" du menu Fichier
Application.CommandBars("Worksheet Menu Bar") _
.Controls("&Fichier").Controls("&Quitter").Enabled = True
End Sub

Salutations

RGI

Bonjour, je sais que la question à déjà été posée mais je ne retrouve pas.
J'aimerai interdire la fermeture d'un classeur via la croix et obliger
l'utilisateur de le faire par un bouton macro que j'ai placé sur la feuille.
Merci de votre aide.



Avatar
Céline Dion
"STEN83" a écrit dans le message de news:

Bonjour, je sais que la question à déjà été posée mais je ne retrouve pas.
J'aimerai interdire la fermeture d'un classeur via la croix et obliger
l'utilisateur de le faire par un bouton macro que j'ai placé sur la
feuille.
Merci de votre aide.
--
Le partage du savoir contribue à l'amélioration de la condition humaine!
Merci à tous


Bonjour,

Dans le module de Thisworkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = varClos
End Sub

Private Sub Workbook_Open()
varClos = True
End Sub

Dans un module ordinaire :

Public varClos

Sub maMacroDeFermeture() 'macro à affecter à un bouton
varClos = False
'ici mettre l'enregistrement ou pas
ActiveWorkbook.Close
End Sub

Cordialités
Céline D.