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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Gerard.beguin@laposte.net> a écrit dans le message de news:uwryPDzQDHA.1712@TK2MSFTNGP12.phx.gbl...
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.
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
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 : ......
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" <michdenis@hotmail.com> a écrit dans le message news:
#BJZpNzQDHA.1024@TK2MSFTNGP12.phx.gbl...