OVH Cloud OVH Cloud

Fermeture classeur

3 réponses
Avatar
Gérard
Bonsoir,

est il possible de forcer l'utilisateur à passer par ma macro pour
fermer un classeur , autrement dit , de desactiver la croix (en haut à
gauche) et fichier/quitter.

Merci

--
Gérard

3 réponses

Avatar
michdenis
Bonjour Gérard,

Essaie ceci :

Assure-toi d'avoir déterminé une autre façon de quitter avant de procéder !


'Dans le ThisWorkbook d'un projet Excel :


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


Private Sub Workbook_Open()

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


'Change le menu exit (ou quitter) de l'appli
Application.CommandBars(1).Controls(1).Controls("&Quitter").OnAction = "Interdit"

End Sub

Private Sub Workbook_Close()

Dim myhWnd As Long, hMenu As Long

'Remet la petite croix
myhWnd = FindWindow("XLMAIN", Application.Caption)
hMenu = GetSystemMenu(myhWnd, 1)
DrawMenuBar myhWnd

'Réinitialise le menu quitter
Application.CommandBars(1).Controls(1).Controls("&Quitter").OnAction = ""
End Sub


'Dans un module standard :

Sub Interdit()
MsgBox "Utiliser la procédure destinée à cet effet"
End Sub


Salutations!



"Gérard" a écrit dans le message de news:
Bonsoir,

est il possible de forcer l'utilisateur à passer par ma macro pour
fermer un classeur , autrement dit , de desactiver la croix (en haut à
gauche) et fichier/quitter.

Merci

--
Gérard
Avatar
Gérard
Merci beaucoup,

en fait j'ai retrouvé plus simple , càd :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not bye
End Sub

.....dans ThisWorkbook


et

Public bye As Boolean

Sub Quitter()
bye = True
ThisWorkbook.Close
End Sub

......dans un module

Testé et approuvé !

Cordialement

--
Gérard


"michdenis" a écrit dans le message news:
#
Bonjour Gérard,

Essaie ceci :
......


Avatar
Clément Marcotte
Mais comme tu ne peux pas empêcher d'utiliser On/Off...


"Gérard" a écrit dans le message de
news:
Bonsoir,

est il possible de forcer l'utilisateur à passer par ma macro pour
fermer un classeur , autrement dit , de desactiver la croix (en haut
à

gauche) et fichier/quitter.

Merci

--
Gérard