OVH Cloud OVH Cloud

dde aide sur simplification code

2 réponses
Avatar
turbo design
Bonjour,

J'aurais besoins d'un conseil pour simplifier un code VBA=20
g=E9rant la gestion automatique d'une barre de menu au=20
regard des droits de l'utilisateur qui se connecte.

j'ai une table qui s'appel gestion_menu qui contien les=20
ID des noms de menu.

Dans la barre de munu, j'ai 8 titres de menu plus quittez.

Malheureusement, le code que j'ai d=E9velopp=E9 m'oblige =E0 le=20
dupliquer 8 fois en changeant le ID de [categorie_menu]
dans la requ=EAte select et le=20
tag:"GCP" pour le ID 1
tag:"GMC" pour le ID 2
dans le Set cbpTools
ect ......

J'ai essay=E9 plusieurs possibilit=E9s mais ne trouve pas.=20
Merci d'avance de vos conseils pr=E9cieux.

Voici le code complet pour un titre de menu

Dim cb As CommandBar, cbpTools As CommandBarPopup
Dim cbTool As CommandBar, cbbNew As CommandBarButton
Dim snpTools As Recordset
Dim intTotalCurrent As Integer, intCurrControl As=20
Integer
=20
'-- Chercher les outils requis par le mode=20
d'affichage
Set snpTools =3D CurrentDb.OpenRecordset _
("Select * from gestion_menu Where=20
[categorie_menu] =3D 1 AND idn_utilisateur =3D " & Me!
ltutilisateur)

'-- '-- Prendre la barre d'outils n=E9cessaire
Set cb =3D CommandBars!gestion_bar_menu

'-- Trouver le menu contextuel Outils et indiquer la
'-- barre de commandes qu'il repr=E9sente
Set cbpTools =3D cb.FindControl(Type:=3DmsoControlPopup,=20
Tag:=3D"GCP")
Set cbTool =3D cbpTools.CommandBar

'-- Supprimer les outils actuellement dans le menu
intTotalCurrent =3D cbTool.Controls.Count
For intCurrControl =3D 1 To intTotalCurrent
cbTool.Controls(1).Delete
Next

'-- Ajouter les nouveaux choix du menu depuis le menu=20
Outils
Do Until snpTools.EOF

Set cbbNew =3D cbTool.Controls.Add
(Type:=3DmsoControlButton)
With cbbNew
.Caption =3D snpTools!nom_menu
.TooltipText =3D snpTools!legende
.OnAction =3D snpTools!fonction_ouverture
.FaceID =3D snpTools!idn_icone
End With

snpTools.MoveNext
Loop

2 réponses

Avatar
Jessy SEMPERE
Bonjour

Il te suffit de rajouter un argument à ta fonction...
Ca pourrait donner ça :
*******************************************************
Function cmdBar(intCat As Integer, strTag As String)

Dim cb As CommandBar, cbpTools As CommandBarPopup
Dim cbTool As CommandBar, cbbNew As CommandBarButton
Dim snpTools As Recordset
Dim intTotalCurrent As Integer, intCurrControl As Integer

'-- Chercher les outils requis par le mode d 'affichage
Set snpTools = CurrentDb.OpenRecordset("Select * from " _
& "gestion_menu Where [categorie_menu] = " & intCat & " And
idn_utilisateur = " & Me!ltutilisateur)

'-- '-- Prendre la barre d'outils nécessaire
Set cb = CommandBars!gestion_bar_menu

'-- Trouver le menu contextuel Outils et indiquer la
'-- barre de commandes qu'il représente
Set cbpTools = cb.FindControl(Type:=msoControlPopup, tag:=strTag)
Set cbTool = cbpTools.CommandBar

'-- Supprimer les outils actuellement dans le menu
intTotalCurrent = cbTool.Controls.Count
For intCurrControl = 1 To intTotalCurrent
cbTool.Controls(1).Delete
Next

'-- Ajouter les nouveaux choix du menu depuis le menu Outils
Do Until snpTools.EOF
Set cbbNew = cbTool.Controls.Add(Type:=msoControlButton)
With cbbNew
.Caption = snpTools!nom_menu
.TooltipText = snpTools!legende
.OnAction = snpTools!fonction_ouverture
.FaceId = snpTools!idn_icone
End With
snpTools.MoveNext
Loop

snpTools.Close: Set snpTools = Nothing
End Function
*******************************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"turbo design" a écrit dans le message news:
14b5401c3c3ad$5472bcf0$
Bonjour,

J'aurais besoins d'un conseil pour simplifier un code VBA
gérant la gestion automatique d'une barre de menu au
regard des droits de l'utilisateur qui se connecte.

j'ai une table qui s'appel gestion_menu qui contien les
ID des noms de menu.

Dans la barre de munu, j'ai 8 titres de menu plus quittez.

Malheureusement, le code que j'ai développé m'oblige à le
dupliquer 8 fois en changeant le ID de [categorie_menu]
dans la requête select et le
tag:"GCP" pour le ID 1
tag:"GMC" pour le ID 2
dans le Set cbpTools
ect ......
Avatar
TURBO DESIGN
Mille merci.

c'est exactement ce que je recherchais.


Thierry

-----Message d'origine-----
Bonjour

Il te suffit de rajouter un argument à ta fonction...
Ca pourrait donner ça :
*******************************************************
Function cmdBar(intCat As Integer, strTag As String)

Dim cb As CommandBar, cbpTools As CommandBarPopup
Dim cbTool As CommandBar, cbbNew As CommandBarButton
Dim snpTools As Recordset
Dim intTotalCurrent As Integer, intCurrControl As
Integer


'-- Chercher les outils requis par le mode
d 'affichage

Set snpTools = CurrentDb.OpenRecordset("Select *
from " _

& "gestion_menu Where [categorie_menu] = " & intCat
& " And

idn_utilisateur = " & Me!ltutilisateur)

'-- '-- Prendre la barre d'outils nécessaire
Set cb = CommandBars!gestion_bar_menu

'-- Trouver le menu contextuel Outils et indiquer la
'-- barre de commandes qu'il représente
Set cbpTools = cb.FindControl(Type:=msoControlPopup,
tag:=strTag)

Set cbTool = cbpTools.CommandBar

'-- Supprimer les outils actuellement dans le menu
intTotalCurrent = cbTool.Controls.Count
For intCurrControl = 1 To intTotalCurrent
cbTool.Controls(1).Delete
Next

'-- Ajouter les nouveaux choix du menu depuis le menu
Outils

Do Until snpTools.EOF
Set cbbNew = cbTool.Controls.Add
(Type:=msoControlButton)

With cbbNew
.Caption = snpTools!nom_menu
.TooltipText = snpTools!legende
.OnAction = snpTools!fonction_ouverture
.FaceId = snpTools!idn_icone
End With
snpTools.MoveNext
Loop

snpTools.Close: Set snpTools = Nothing
End Function
*******************************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"turbo design" a écrit dans le
message news:

14b5401c3c3ad$5472bcf0$
Bonjour,

J'aurais besoins d'un conseil pour simplifier un code VBA
gérant la gestion automatique d'une barre de menu au
regard des droits de l'utilisateur qui se connecte.

j'ai une table qui s'appel gestion_menu qui contien les
ID des noms de menu.

Dans la barre de munu, j'ai 8 titres de menu plus
quittez.


Malheureusement, le code que j'ai développé m'oblige à le
dupliquer 8 fois en changeant le ID de [categorie_menu]
dans la requête select et le
tag:"GCP" pour le ID 1
tag:"GMC" pour le ID 2
dans le Set cbpTools
ect ......


.