OVH Cloud OVH Cloud

verrouillage menu

4 réponses
Avatar
DENIS
bonjour à tous,
je souhaiterai verrouiller tous les menus d 'excel à l'appel de mon fichier
de sorte qu 'il soit impossible de "bidouiller" les formats ..... (sachant
que certains utilisateurs ne soient pas ) et je souaiterai également
verrouiller l 'acces au menu (par clic droit).

merci par avance

4 réponses

Avatar
anonymousA
bonjour,

une proc complète due pour la partie API à Alain CROS qui invalide tous
les menus d'Excel et qui lance à l'ouverture du fichier une procédure à
toi qui crée un menu personnalisé.A manier avec précaution cependnat si
tu n'es pas familiarisé à la manipulation des barres de menus sous Excel.

Dans le module ThisWorkbook, dans la procédure workbook_open et
Workbook_BeforeClose

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

Private Sub Workbook_Open()
BloqueCommandePersonnaliser False
LeHook True
End Sub

Dans un module oridnaire

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

Sub BloqueCommandePersonnaliser(bbar)

With Application
.CommandBars.FindControl(ID:y7).Enabled = bbar
.CommandBars("Toolbar List").Enabled = bbar
End With
For Each cb In Application.CommandBars
cb.Enabled = bbar
Next

TestBoAvecMenus 'ici la cration d'une barre de commandes personnaliséé
'dans laquelle tu mettras à la fin de création d'une barre appelée Mybar
'MyBar.Protection = msoBarNoCustomize

End sub



bonjour à tous,
je souhaiterai verrouiller tous les menus d 'excel à l'appel de mon fichier
de sorte qu 'il soit impossible de "bidouiller" les formats ..... (sachant
que certains utilisateurs ne soient pas ) et je souaiterai également
verrouiller l 'acces au menu (par clic droit).

merci par avance





Avatar
Daniel
Bonsoir.
Je ne suis pas trop à l'aise là-dedans.
Pour le clic droit de la souris tu peux essayer :

For Each Controle In Application.CommandBars("Cell").Controls
Controle.Visible = False
Next Controle

Il y a aussi Controle.Delete et Controle.Reset, plus radical. (non testé !)
Cordialement.
Daniel
"DENIS" a écrit dans le message de news:

bonjour à tous,
je souhaiterai verrouiller tous les menus d 'excel à l'appel de mon
fichier
de sorte qu 'il soit impossible de "bidouiller" les formats ..... (sachant
que certains utilisateurs ne soient pas ) et je souaiterai également
verrouiller l 'acces au menu (par clic droit).

merci par avance





Avatar
DENIS
bounjour à vous,
j 'ai un petit problème de compilation avec ces lignes:

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 SetWindowsHookEx& Lib "user32" ()
Alias "SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal hmod&,
ByVal dwThreadId&)

les lignes commencant par Alias sont en rouge ..
Help (déjà que je comprend pas tout... le debuger est encore moins simple)

merci par avance



bonjour à tous,
je souhaiterai verrouiller tous les menus d 'excel à l'appel de mon fichier
de sorte qu 'il soit impossible de "bidouiller" les formats ..... (sachant
que certains utilisateurs ne soient pas ) et je souaiterai également
verrouiller l 'acces au menu (par clic droit).

merci par avance





Avatar
isabelle
bonjour Denis,

en fait cette commande :

Private Declare Function PostMessage& Lib "user32" () Alias "PostMessageA" (ByVal hwnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)

devrait être sur une même ligne, la copie fait en sorte un retour à la ligne qu'il ne devrait pas y avoir.

isabelle


bounjour à vous,
j 'ai un petit problème de compilation avec ces lignes:

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 SetWindowsHookEx& Lib "user32" ()
Alias "SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal hmod&,
ByVal dwThreadId&)

les lignes commencant par Alias sont en rouge ..
Help (déjà que je comprend pas tout... le debuger est encore moins simple)

merci par avance




bonjour à tous,
je souhaiterai verrouiller tous les menus d 'excel à l'appel de mon fichier
de sorte qu 'il soit impossible de "bidouiller" les formats ..... (sachant
que certains utilisateurs ne soient pas ) et je souaiterai également
verrouiller l 'acces au menu (par clic droit).

merci par avance