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
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 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" a écrit dans le message de groupe de discussion : 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
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" <Peponne31@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : B7DC13D5-7CE8-4C26-A9E6-45A7FA89C1B2@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
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" a écrit dans le message de groupe de discussion : 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
Bonjour,
> 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:y7).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:y7).Enabled = True 'dans le menu Affichage et par clic droit sur une barre d'outils .CommandBars("Toolbar List").Enabled = True End With End Sub '========================= > 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/
Peponne31 a écrit :
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
Bonjour,
> 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:y7).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:y7).Enabled = True
'dans le menu Affichage et par clic droit sur une barre d'outils
.CommandBars("Toolbar List").Enabled = True
End With
End Sub
'=========================
> 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/
Peponne31 a écrit :
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
> 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:y7).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:y7).Enabled = True 'dans le menu Affichage et par clic droit sur une barre d'outils .CommandBars("Toolbar List").Enabled = True End With End Sub '========================= > 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/
Peponne31 a écrit :
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
Merci à vous 2 j'ai essayé le code de Michdenis et ça me va tès bien
Merci Peponne31
"Peponne31" a écrit :
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
Merci à vous 2
j'ai essayé le code de Michdenis et ça me va tès bien
Merci
Peponne31
"Peponne31" a écrit :
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
Merci à vous 2 j'ai essayé le code de Michdenis et ça me va tès bien
Merci Peponne31
"Peponne31" a écrit :
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