Discussion:
Click droit sur barre de Menu
(trop ancien pour répondre)
Peponne31
2009-09-23 16:06:01 UTC
Bonjour,

Est-il possible en vba d'interdire le click droit de la souris
sur une barre de menu perso ?
Dans le mème contexte à la fin de la barre de menu
il y a un petit triangle pour accéder aux options de la barre de menu,
peut on le supprimer ?
Merci pour vos réponses
Peponne31
michdenis
2009-09-23 16:55:57 UTC
Bonjour Peponne31,

Pour empêcher le clic droit sur la barre des menus :

sub test()
Application.CommandBars("Toolbar List").Enabled = False
End Sub

Cependant, le double-clique dans la zone dans l'espace des barres d'outils
(non la barre des menus) permet d'ouvrir la même fenêtre que le clic droit.

Sauf qu'avant la version Excel 2002, il n'y a pas de moyen de prévu en VBA
pour limiter l'effet du double-clique.

Depuis 2002, tu as ceci :

'------------------------
sub Test()
Application.CommandBars("Toolbar List").Enabled = False
Application.CommandBars.DisableCustomize = True
End Sub
'------------------------

On ne peut pas enlever le petite bouton au bout d'une barre d'outils
mais la conjugaison de ces 2 lignes de commande le désactive.

Si tu veux empêcher le double-clique dans une version précédente, il y
a ceci qui a été proposé par Alain Cros


Dans le module ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
LeHook
End Sub
Private Sub Workbook_Open()
LeHook True
End Sub

Dans un module ordinaire

Private Declare Function LockWindowUpdate& Lib "user32" ( _
ByVal hwndLock&)
Private Declare Function PostMessage& Lib "user32" _
Alias "PostMessageA" (ByVal hwnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)
Private Declare Function FindWindowEx& Lib "user32" _
Alias "FindWindowExA" (ByVal hWnd1&, ByVal hWnd2&, ByVal lpsz1$, ByVal lpsz2$)
Private Declare Function GetWindowLong& Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd&, ByVal nIndex&)
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetWindowsHookEx& Lib "user32" _
Alias "SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)
Private Declare Function GetWindowText& Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd&, ByVal lpString$, ByVal cch&)
Private Declare Function UnhookWindowsHookEx& Lib "user32" _
(ByVal hHook&)
Private lgHook&
Sub LeHook(Optional cache As Boolean)
Const GWL_HINSTANCE& = -6
If cache Then
InstallHook GetWindowLong(FindWindowEx(0&, 0&, "XLMAIN", _
Application.Caption), GWL_HINSTANCE)
Else
UnhookWindowsHookEx lgHook
End If
End Sub
Sub InstallHook(lgInst&)
Const WH_CBT& = &H5
#If VBA6 Then
lgHook = SetWindowsHookEx(WH_CBT, AddressOf WinHook, _
lgInst, GetCurrentThreadId)
#Else
lgHook = SetWindowsHookEx(WH_CBT, AddrOf("WinHook"), _
lgInst, GetCurrentThreadId)
#End If
End Sub
Private Function WinHook&(ByVal lMsg&, ByVal wParam&, ByRef lParam&)
Const HCBT_ACTIVATE& = &H5, WM_SYSCOMMAND& = &H112, SC_CLOSE& = &HF060&
Dim MYSTR$
If lMsg = HCBT_ACTIVATE Then
LockWindowUpdate wParam
MYSTR = Space$(100&)
MYSTR = Left$(MYSTR, GetWindowText(wParam, MYSTR, 100&))
If MYSTR = "Personnaliser" Or MYSTR = "Personnalisation" Then
PostMessage wParam, WM_SYSCOMMAND, SC_CLOSE, 0&
Else
LockWindowUpdate False
End If
End If
WinHook = False
End Function





"Peponne31" <***@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : B7DC13D5-7CE8-4C26-A9E6-***@microsoft.com...
Bonjour,

Est-il possible en vba d'interdire le click droit de la souris
sur une barre de menu perso ?
Dans le mème contexte à la fin de la barre de menu
il y a un petit triangle pour accéder aux options de la barre de menu,
peut on le supprimer ?
Merci pour vos réponses
Peponne31
FS
2009-09-23 16:58:38 UTC
Bonjour,
Post by Peponne31
Est-il possible en vba d'interdire le click droit de la souris
sur une barre de menu perso ?
Pas spécifiquement sur une barre d'outils perso. On peut désactiver la
possibilité de personnaliser les barres d'outils.

'==========================
Sub BloqueCommandePersonnaliser()
'désactiver l'accès à la boite de dialogue Personnaliser d'Excel
With Application
'dans le menu Outils
.CommandBars.FindControl(ID:=797).Enabled = False
'dans le menu Affichage et par clic droit sur une barre d'outils
.CommandBars("Toolbar List").Enabled = False
End With
End Sub

Sub RétablitCommandePersonnaliser()
'réactiver l'accès à la boite de dialogue Personnaliser d'Excel
With Application
'dans le menu Outils
.CommandBars.FindControl(ID:=797).Enabled = True
'dans le menu Affichage et par clic droit sur une barre d'outils
.CommandBars("Toolbar List").Enabled = True
End With
End Sub
'==========================
Post by Peponne31
Dans le mème contexte à la fin de la barre de menu
il y a un petit triangle pour accéder aux options de la barre de menu,
peut on le supprimer ?
Certains disent que oui et tu devrais trouver des procédures pour ça en
faisant une recherche dans les archives du groupe ou sur excelabo.
Personnellement, je n'y suis jamais arrivé.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Post by Peponne31
Bonjour,
Est-il possible en vba d'interdire le click droit de la souris
sur une barre de menu perso ?
Dans le mème contexte à la fin de la barre de menu
il y a un petit triangle pour accéder aux options de la barre de menu,
peut on le supprimer ?
Merci pour vos réponses
Peponne31
Peponne31
2009-09-23 17:36:01 UTC
Merci à vous 2
j'ai essayé le code de Michdenis et ça me va tès bien

Merci
Peponne31
Post by Peponne31
Bonjour,
Est-il possible en vba d'interdire le click droit de la souris
sur une barre de menu perso ?
Dans le mème contexte à la fin de la barre de menu
il y a un petit triangle pour accéder aux options de la barre de menu,
peut on le supprimer ?
Merci pour vos réponses
Peponne31