OVH Cloud OVH Cloud

Desactiver les 3 Boutons

3 réponses
Avatar
lapinou
Bonjours,
J'aimerais désactiver les 3 boutons (fermer, agrandir, réduire) dans un
classeurs excel, sans passer par une macro, est ce possible si oui comment???
(base de regisrtre???)
Merci de vos réponses

3 réponses

Avatar
JièL
Bonjoir(c) lapinou

Le 27/01/2007 22:57 vous avez écrit ceci :
Bonjours,
J'aimerais désactiver les 3 boutons (fermer, agrandir, réduire) dans un
classeurs excel, sans passer par une macro, est ce possible si oui comment???
(base de regisrtre???)


Si c'était possible de le faire dans la base de registre, ça concernerait
TOUS les classeurs et pas juste un, et en plus ça serait uniquement sur CE
poste...

Pourquoi ne voulez vous pas de macro si ce n'est pas indiscret ?

Merci de vos réponses


--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/

Avatar
MichDenis
2 façons de faire :: A et B

A-
====================================== 'Dans un module standard, tu copies dans le haut de celui-ci
'la déclaration des API. Ces procédures cachent ou affichent
'la barre de titre avec les 3 boutons de commande à l'extrême
'droite. Si en plus, tu protège ton Classeur (pas la feuille)-Option
'feuille, l'usager ne pourra pas fermer l'application, redimensionner
'la fenêtre de l'application ou de la feuille de calcul.

'Déclaration des API
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (-16)
Public Const WS_CAPTION = &HC00000

'--------------------------------------------------
Sub CachéLaBarreDeTitreExcel()
Dim hWnd As Long, Style As Long
Nom = ActiveWindow.Application.Parent.Caption
hWnd = FindWindow(vbNullString, Nom)
Style = GetWindowLong(hWnd, GWL_STYLE) And Not WS_CAPTION
SetWindowLong hWnd, GWL_STYLE, Style
End Sub
'--------------------------------------------------
Sub AfficherLaBarreDeTitreExcel()
Dim hWnd As Long, Style As Long
Nom = ActiveWindow.Application.Parent.Caption
hWnd = FindWindow(vbNullString, Nom)
Style = GetWindowLong(hWnd, GWL_STYLE) Or WS_CAPTION
SetWindowLong hWnd, GWL_STYLE, Style
End Sub
======================================
B -
====================================== Ce qui suit :
'1 - Enlève les boutons et inhibe le bouton de fermeture de l'application
'2 - Fait disparaître le menus de l'icône excel de la barre de titre
'3 - La barre de titre demeure toujours présente.
'4 - Pour tout masquer, exécuter la procédure :
' Sub ProcedureGeneral_EnleverLesBoutons_Et_Commandes()
'5 - Pour remettre tout en place, Exécuter la procédure :
' Sub ProcedureGeneral_RemettreLesBoutons_Et_Commandes()
'6 - Et pour empêcher le redimensionnement de la feuille de calcul,
' il y a toujours la commande : Menu / outils / Protéger le classeur / fenêtre.


'Déclaration des API dans le haut d'un module standard.
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetClassLong Lib "user32" _
Alias "GetClassLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetClassLong Lib "user32" _
Alias "SetClassLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Integer) As Integer

Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, _
ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer

Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) _
As Long

Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
Const GWL_STYLE = (-16)

Sub Disable_Control()
Dim X As Integer
For X = 1 To 9
Call DeleteMenu(GetSystemMenu(Application.hWnd, False), 0, 1024)
Next X
End Sub

Sub RestoreSystemMenu()
hMenu% = GetSystemMenu(Application.hWnd, 1)
End Sub

Sub HideMinimizeAndMaximizeButtons()
Dim L As Long
L = GetWindowLong(Application.hWnd, GWL_STYLE)
L = L And Not (WS_MINIMIZEBOX)
L = L And Not (WS_MAXIMIZEBOX)
L = SetWindowLong(Application.hWnd, GWL_STYLE, L)
End Sub

Sub RestoreMinimizeAndMaximizeButtons()
Dim L As Long
L = GetWindowLong(Application.hWnd, GWL_STYLE)
L = SetWindowLong(Application.hWnd, GWL_STYLE, WS_MINIMIZEBOX _
Or WS_MAXIMIZEBOX Or L)
End Sub

Sub RestaureLaCroix()
Dim LeHandleExcel As Long
Const GCL_STYLE = (-26)
Const CS_NOCLOSE = &H200
LeHandleExcel = FindWindowA("XLMAIN", Application.Caption)
SetClassLong LeHandleExcel, GCL_STYLE, _
GetClassLong(LeHandleExcel, GCL_STYLE) _
Xor CS_NOCLOSE
End Sub

Sub EnleveLaCroix()
Dim LeHandleExcel As Long
Const GCL_STYLE = (-26)
Const CS_NOCLOSE = &H200
LeHandleExcel = FindWindowA("XLMAIN", Application.Caption)
SetClassLong LeHandleExcel, GCL_STYLE, _
GetClassLong(LeHandleExcel, GCL_STYLE) _
Xor CS_NOCLOSE
End Sub

Sub ProcedureGeneral_EnleverLesBoutons_Et_Commandes()

Call Disable_Control
Call HideMinimizeAndMaximizeButtons
Call EnleveLaCroix
End Sub

Sub ProcedureGeneral_RemettreLesBoutons_Et_Commandes()
Call RestoreSystemMenu
Call RestoreMinimizeAndMaximizeButtons
Call RestaureLaCroix
End Sub


"lapinou" a écrit dans le message de news:

Bonjours,
J'aimerais désactiver les 3 boutons (fermer, agrandir, réduire) dans un
classeurs excel, sans passer par une macro, est ce possible si oui comment???
(base de regisrtre???)
Merci de vos réponses
Avatar
Ange Ounis
OutilsProtectionProtéger le classeur, cocher Fenêtres dans les éléments à
protéger puis OK.

----------
Ange Ounis
----------

Bonjours,
J'aimerais désactiver les 3 boutons (fermer, agrandir, réduire) dans un
classeurs excel, sans passer par une macro, est ce possible si oui comment???
(base de regisrtre???)
Merci de vos réponses