Désactiver les icones réduire restaurer fermer d'excel
Dans le module ThisWorkbook de l'application :
Private Declare Function FindWindowA Lib "User32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowLongA Lib "User32" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLongA Lib "User32" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private sub Workbook_BeforeClose(Cancel As Boolean) Dim hwnd As Long hwnd = FindWindowA(vbNullString, Application.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) Or &H80000 end sub
Private sub Workbook_Open() Dim hwnd As Long hwnd = FindWindowA(vbNullString, Application.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF end sub
Et pour choisir précisément ce sur quoi on veut agir...
Private Const MF_BYPOSITION As Long = &H400 Private Const mlNUM_SYS_MENU_ITEMS As Long = 9 Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hWnd As Long, ByVal bRevert As Long) 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 FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName _ As String) As Long Public Sub DisableSystemMenu() Dim lHandle As Long, lCount As Long On Error Resume Next lHandle = FindWindowA(vbNullString, Application.Caption) If lHandle <> 0 Then 'désactive la croix de fermeture d'Excel 'et la commande Fermeture du menu système DeleteMenu GetSystemMenu(lHandle, False), 6, &H400 'supprime le trait de séparation du menu système avant Fermeture DeleteMenu GetSystemMenu(lHandle, False), 5, &H400 'supprime la commande Agrandissement du menu système 'et la commande Agrandir de la fenêtre DeleteMenu GetSystemMenu(lHandle, False), 4, &H400 'supprime la commande Réduction du menu système 'et désactive la commande Réduire de la fenêtre DeleteMenu GetSystemMenu(lHandle, False), 3, &H400 'désactive la commande Déplacement du menu système DeleteMenu GetSystemMenu(lHandle, False), 2, &H400 'supprime la commande Déplacement du menu système 'et désactive la commande Dimension DeleteMenu GetSystemMenu(lHandle, False), 1, &H400 'supprime la commande Restauration du menu système 'et désactive la commande Restaurer de la fenêtre DeleteMenu GetSystemMenu(lHandle, False), 0, &H400 End If end sub
rétablit le menu sytème et les commandes de fenêtre (Réduire, Agrandir, Fermer)
Public Sub EnableSystemMenu() Dim lHandle As Long On Error Resume Next lHandle = FindWindowA(vbNullString, Application.Caption) GetSystemMenu lHandle, True end sub
Auteurs : Laurent Longre, Vasant Nanavati, Andrew Baker, Frédéric Sigonneau
Mots clefs associés à cette page : barre, icône, protéger, protection, désactiver
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
