Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Barre de menu

2 réponses
Avatar
JeanYves \(au pro\)
Bonjour,

Dans Access 2000, est il possible d'activer ou de désactiver certains sous
menus, d'une barre de menu, en fonction de l'autorisation qui est accordée à
l'utilisateur ?

Par exemple :

<MaBarre> est composée du menu <Clients> lui même composé des sous menus
<Nouveau>, <Chiffre>, <Ancien> ces sous menus étant affectés à l'ouverture
de formulaire ou d'états.

Je souhaite par exemple activer

<Nouveau> et <Chiffre> à l'utilisateur 1
<Chiffre> et <Ancien> à l'utilisateur 2
<Nouveau>, <Chiffre> et <Ancien> à l'utilisateur 3

Pour ce faire j'irais chercher l'info sur l'utilisateur dans <MaTable>,
<MonUtilisateur>

La barre de menu serait créée à l'aide du générateur de barre de menus.

D'avance merci

2 réponses

Avatar
Evaro
"JeanYves (au pro)" a écrit dans le message de
news:ch7235$ht0$
Bonjour,

Dans Access 2000, est il possible d'activer ou de désactiver certains
sous

menus, d'une barre de menu, en fonction de l'autorisation qui est
accordée à

l'utilisateur ?

Par exemple :

<MaBarre> est composée du menu <Clients> lui même composé des sous menus
<Nouveau>, <Chiffre>, <Ancien> ces sous menus étant affectés à
l'ouverture

de formulaire ou d'états.

Je souhaite par exemple activer

<Nouveau> et <Chiffre> à l'utilisateur 1
<Chiffre> et <Ancien> à l'utilisateur 2
<Nouveau>, <Chiffre> et <Ancien> à l'utilisateur 3

Pour ce faire j'irais chercher l'info sur l'utilisateur dans <MaTable>,
<MonUtilisateur>

La barre de menu serait créée à l'aide du générateur de barre de menus.

D'avance merci




Bonjour,
Je viens de faire un truc comme çà, regarde si tu peux l'adapter
Je ne teste ici que les droits sur les formulaires.
Je lance cette procédure à l'ouverture du formulaire d'accueil
A adapter pour les tables...

Public Function MajMenus() ' Active ou désactive les menus en fonctions
des droits d'accès
Call Majmenu(Application.CommandBars("MaBarreDeMenu"))
End Function

Public Sub Majmenu(cb As CommandBar)
Dim cmdBCtl As CommandBarControl, cmdBCtlCtl As CommandBarControl,
xCtl As CommandBarControl
Dim intBcle As Integer, strAction As String
On Error GoTo NoLevel3
For Each xCtl In cb.Controls
strAction = xCtl.OnAction & xCtl.Parameter
xCtl.Enabled = getPermission(strAction)
intBcle = 1 ' Indicateur de renvoi en fin de boucle en cas
d'erreur (pas de sous menus)
If xCtl.Controls.Count > 0 Then
For Each cmdBCtl In xCtl.Controls
strAction = cmdBCtl.OnAction & cmdBCtl.Parameter
cmdBCtl.Enabled = getPermission(strAction)
intBcle = 2
For Each cmdBCtlCtl In cmdBCtl.Controls
strAction = cmdBCtlCtl.OnAction & cmdBCtlCtl.Parameter
cmdBCtlCtl.Enabled = getPermission(strAction)
Next
Suite2:
Next
End If
suite1:
Next
Exit Sub
NoLevel3:
If err = 438 And intBcle = 1 Then Resume suite1
If err = 438 And intBcle = 2 Then Resume Suite2
Stop
Resume
End Sub

Public Function getPermission(strObj As String) As Boolean
' Renvoie Vrai si l'utilisateur à l'autorisation de lire le nom de l'objet
passé en paramètre
Dim strTypeObj As String
Dim intChoix As Integer
On Error GoTo Err_getPermission

getPermission = True
If Len(strObj) = 0 Then ' Le contrôle ne déclenche pas d'action mais
ouvre un sous-menu
Exit Function
End If
strTypeObj = Left$(strObj, 2)
Select Case strTypeObj
Case "F_" 'Formulaires
' &H2FE01 correspond aux droits qu'ont tous les utilisateurs
de lire les permissions
getPermission ((CurrentDb.Containers("Forms").Documents(strObj).AllPermissions Or
&H2FE01) > &H2FE01)
Case "E_" 'Etats
getPermission ((CurrentDb.Containers("Reports").Documents(strObj).AllPermissions Or
&H2FE01) > &H2FE01)
End Select

Exit_getPermission:
Exit Function
Err_getPermission:
If err = 3265 Then ' Objet inexistant
getPermission = False
GoTo Exit_getPermission
End If
intChoix = MsgBox("Erreur " & err & " : " & err.Description & vbCrLf &
"Procedure : getPermission", vbAbortRetryIgnore)
If intChoix = vbRetry Then Resume
If intChoix = vbIgnore Then Resume Next
Resume Exit_getPermission
End Function


--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm

Avatar
JeanYves \(au pro\)
C'est sympas, merci beaucoup, je vais essayer.
@+
JY

"Evaro" a écrit dans le message de
news:%

"JeanYves (au pro)" a écrit dans le message de
news:ch7235$ht0$
Bonjour,

Dans Access 2000, est il possible d'activer ou de désactiver certains
sous

menus, d'une barre de menu, en fonction de l'autorisation qui est
accordée à

l'utilisateur ?

Par exemple :

<MaBarre> est composée du menu <Clients> lui même composé des sous menus
<Nouveau>, <Chiffre>, <Ancien> ces sous menus étant affectés à
l'ouverture

de formulaire ou d'états.

Je souhaite par exemple activer

<Nouveau> et <Chiffre> à l'utilisateur 1
<Chiffre> et <Ancien> à l'utilisateur 2
<Nouveau>, <Chiffre> et <Ancien> à l'utilisateur 3

Pour ce faire j'irais chercher l'info sur l'utilisateur dans <MaTable>,
<MonUtilisateur>

La barre de menu serait créée à l'aide du générateur de barre de menus.

D'avance merci




Bonjour,
Je viens de faire un truc comme çà, regarde si tu peux l'adapter
Je ne teste ici que les droits sur les formulaires.
Je lance cette procédure à l'ouverture du formulaire d'accueil
A adapter pour les tables...

Public Function MajMenus() ' Active ou désactive les menus en fonctions
des droits d'accès
Call Majmenu(Application.CommandBars("MaBarreDeMenu"))
End Function

Public Sub Majmenu(cb As CommandBar)
Dim cmdBCtl As CommandBarControl, cmdBCtlCtl As CommandBarControl,
xCtl As CommandBarControl
Dim intBcle As Integer, strAction As String
On Error GoTo NoLevel3
For Each xCtl In cb.Controls
strAction = xCtl.OnAction & xCtl.Parameter
xCtl.Enabled = getPermission(strAction)
intBcle = 1 ' Indicateur de renvoi en fin de boucle en cas
d'erreur (pas de sous menus)
If xCtl.Controls.Count > 0 Then
For Each cmdBCtl In xCtl.Controls
strAction = cmdBCtl.OnAction & cmdBCtl.Parameter
cmdBCtl.Enabled = getPermission(strAction)
intBcle = 2
For Each cmdBCtlCtl In cmdBCtl.Controls
strAction = cmdBCtlCtl.OnAction & cmdBCtlCtl.Parameter
cmdBCtlCtl.Enabled = getPermission(strAction)
Next
Suite2:
Next
End If
suite1:
Next
Exit Sub
NoLevel3:
If err = 438 And intBcle = 1 Then Resume suite1
If err = 438 And intBcle = 2 Then Resume Suite2
Stop
Resume
End Sub

Public Function getPermission(strObj As String) As Boolean
' Renvoie Vrai si l'utilisateur à l'autorisation de lire le nom de l'objet
passé en paramètre
Dim strTypeObj As String
Dim intChoix As Integer
On Error GoTo Err_getPermission

getPermission = True
If Len(strObj) = 0 Then ' Le contrôle ne déclenche pas d'action mais
ouvre un sous-menu
Exit Function
End If
strTypeObj = Left$(strObj, 2)
Select Case strTypeObj
Case "F_" 'Formulaires
' &H2FE01 correspond aux droits qu'ont tous les utilisateurs
de lire les permissions
getPermission > ((CurrentDb.Containers("Forms").Documents(strObj).AllPermissions Or
&H2FE01) > &H2FE01)
Case "E_" 'Etats
getPermission > ((CurrentDb.Containers("Reports").Documents(strObj).AllPermissions Or
&H2FE01) > &H2FE01)
End Select

Exit_getPermission:
Exit Function
Err_getPermission:
If err = 3265 Then ' Objet inexistant
getPermission = False
GoTo Exit_getPermission
End If
intChoix = MsgBox("Erreur " & err & " : " & err.Description & vbCrLf &
"Procedure : getPermission", vbAbortRetryIgnore)
If intChoix = vbRetry Then Resume
If intChoix = vbIgnore Then Resume Next
Resume Exit_getPermission
End Function


--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm