Limitation choix liste déroulante selon users

Résolu/Fermé
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 22 mars 2010 à 16:15
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 24 mars 2010 à 14:26
Bonjour, j'ai encore un petit problème, j'avance dans mon projet et je viens de remarquer qu'il va y avoir un problème dans la façon dont l'une de mes listes déroulantes est faite.
J'ai pour l'instant deux formulaire différents, certain pourront les utiliser tout les deux mais l'un des deux ne sera utilisables que par une minorité des personnes dans l'entreprise.

L'un s'occupe de rentrer les différentes données sur les stagiaires, et l'autre se charge des autres personnes.

J'ai un champ Statut qui reprend les différentes statut de personnes possibles (stagiaires, bénévole, partenaire, fournisseurs,...), ce champ est une liste déroulante alimentée par une table.

Je compte faire des formulaires servant pour l'insertion de nouvelles personnes, et à partir d'un formulaire de recherche, afficher les différents enregistrements.

Le formulaire de recherche fonctionne comme ceci : c'est un formulaire double affichage avec plusieurs checkbox, au départ elles sont toutes activés, tout les enregistrements sont affichés, si je décoche l'une des checkbox, un champ texte ou une liste déroulante apparait, et on filtre selon ce qu'on rentre la dedans.

Voila pour la mise en situation, voici les problèmes:
1°Dans la liste déroulante Statut, je ne peux pas toujours montrer stagiaire au vu que dans le formulaire gérant les personnes non stagiaires, les utilisateurs ne doivent pas pouvoir le choisir, mais dans le formulaire de recherche il doit apparaître, je cherche donc le moyen d'empêcher qu'il soit visible dans la liste déroulante dans le formulaire.

2°Dans le formulaire de recherche, si le stagiaire est choisi, il y a deux cas différents, soit la personne a les droits suffisants pour accéder au formulaire s'occupant des stagiaires, soit il ne les as pas, mais il peut malgré tout avoir accès à certaine information comme le nom, le téléphone, l'adresse, que l'on retrouve dans l'autre formulaire. Je me pose la question de comment faire pour envoyez d'un côté ou de l'autre selon la personne qui est connectée. Donc quand le statut stagiaire est sélectionné et que l'on double clique sur l'un des résultats de la recherche, selon l'utilisateur et ses droits, il sera guider sur le bon formulaire.

3°Dans la continuité des deux premiers points, si dans le premier cas il devient pas visible dans la liste déroulante, il doit rester malgré tout insérable pour que je puisse utilisé ce formulaire la pour montrer aux personnes n'ayant pas les droits de voir le formulaire fait pour les stagiaires de voir les infos qu'ils ont droit avec dans le champs statut noté Stagiaire. Si on ne fait que cacher à la vue au utilisateur n'ayant pas les droits, il ne devrait y avoir aucun problème, au vu qu'elle serait dans la liste et après avoir double cliquer sur l'enregistrement dans le formulaire, il devrait me l'afficher convenablement.

Désolé pour la tartine, j'ai essayé de faire le plus clair possible, j'espère que ca l'es.
Merci d'avance.

4 réponses

blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
22 mars 2010 à 16:25
Salut,

1 - Comment est constituée ta liste déroulante ?
2 - msgbox environ("username")
3 - ???
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
22 mars 2010 à 16:44
Merci de la réponse.

1.Pour le comment est constitué la liste déroulante, ce qui se trouve dans ma liste déroulante se trouve dans une table, elle comporte deux champ, un numéro, et le nom du statut, ce qui s'affiche à l'écran est le nom du statut, en utilisant l'assistant de liste, il a créé une relation entre mon champ statut de ma table principale à celle gérant les possibilités du menu déroulant.


2. si je me trompe pas, ca va récupérer le compte de l'utilisateur, et il me suffit de faire un if, si c'est ceux appartenant a tel ou tel groupe alors on fait ca sinon on fait ca. J'essayerais ca quand je le pourrais, je suis loin d'avoir la possibilité de mettre en place la sécurité au niveau utilisateur.

3.je reviendrais sur ce point après la solution du point 1, le problème est que je pourrais n'être clair qu'en sachant comment on peut faire
0
blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
Modifié par blux le 24/03/2010 à 10:49
Il faut donc que tu changes la source de la liste déroulante en fonction du user connecté (requête à faire en dynamique + rowsource à changer).
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
Modifié par Iruka72 le 24/03/2010 à 12:34
je viens de penser a quelque chose mais je ne suis pas sur que ce soit possible en vba:

Faire un test sur l'utilisateur enregistré, et puis selon le cas, afficher tel ou tel colonne de la table concernée.

En C c'est switch case, je ne connais pas l'équivalent en vba:
a=msgbox environ("username")
Switch (a )
case "user1": code sql qui donne la source ou utiliser plutot quelque chose comme Statut.source=table.column(2)
case "user2": code sql qui donne la source ou utiliser plutot quelque chose comme Statut.source=table.column(3)
...
(la colonne 1 étant une valeur numérique qui ne me sert que dans certain test et Statut.source n'est pas valide mais je ne connais pas ce qu'il faut mettre exactement)

Je ne sais pas si c'est possible, je ne vois pas pourquoi ca ne le serait pas mais bon, peut être est ce ce que tu voulais me dire ou c'est une requête qu'il faut appeler dans le code vba selon l'utilisateur connecté? enfin une requète est au final un code sql donc ce serait bien une requête que je fais ici implicitement non?

Je n'ai pas encore beaucoup travaillé avec des requêtes mes questions peuvent parraître bête, mais j'essaye de comprendre au mieux pour faire un boulot correct.

Merci de ta réponse, j'espère que j'ai été assez clair dans mon raisonnement
0
blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
Modifié par blux le 24/03/2010 à 13:11
Select Case Environ("username") 
Case "user1" 
    Me.ma_liste.RowSource = "SELECT col1 FROM A" 
    Me.ma_liste.Requery 
Case "user2" 
    Me.ma_liste.RowSource = "SELECT col2 FROM A" 
    Me.ma_liste.Requery 
End Select
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
Modifié par Iruka72 le 24/03/2010 à 16:10
Merci select case donc, faudra que je retienne ca, ca me sera utile pour d'autre test.

Et pour le point 3, j'ai trouvé une solution satisfaisante.
0