Programmation liste déroulante VBA
Bonjour à tous,
J'ai créé un document à accès limité par un code de connexion, et je souhaiterai insérer dans un document une liste déroulante dont les valeurs proposés vont varier en fonction de la personne connectée.
Ce document, que j'ai partagé en pièce jointe, est accessible par 3 personnes :
- Le responsable nommé A dont l'identifiant est A et le mot de passe est aaaa
- Le gérant de 5 magasins nommé B dont l'identifiant est B et le mot de passe est bbbb
- Le gérant de 5 autres magasins nommé C dont l'identifiant est C et le mot de passe est cccc
B et C n'ont accès qu'à un seul onglet du fichier, l'onglet B, sur lequel il pourront avoir accès à une série d'indicateurs d'activités des magasins qu'ils gèrent. Par soucis de sécurité, je souhaiterais que chacun d'eux ne puissent avoir accès qu'aux indicateurs de leurs magasins. A bien sûr peux voir l'ensemble des données.
Ainsi, j'aimerais qu'en haut de l'onglet on puisse choisir un magasin à l'aide d'une liste déroulante et que ensuite les indicateurs se calculent automatiquement pour le magasin choisi...
Je pense à une fonction VBA sur une zone de liste déroulante du genre : "si utilisateur connecté = ... alors proposer de choisir dans la liste ..." avec une liste par protagoniste.
Pourriez-vous me dire d'une part si c'est possible et d'une autre part auriez-vous des idées de fonction pour ce faire ?
Par avance merci,
Cordialement,
Hugo
Bonjour M12,
Merci pour ta réponse. La solution proposée répond partiellement à mon besoin ... en effet, en l'état je ne peux pas changer de magasin directement sur ma page (bon je peux certainement coder facilement quelques lignes pour avoir un visuel directement sur l'écran) mais j'avais imaginé (si possible bien entendu) insérer une zone de liste déroulante directement dans mon document. Penses-tu que ce soit possible ?
Hugo
Ce coup là ça me semble top merci. Par contre, j'ai encore une petite question, comment puis-je récupérer la valeur choisie dans la combobox ?C'est pour pouvoir ensuite la réutiliser dans des formules tel que nb.si ...
Re,
par exemple en G2 sur Feuil2, mettre cette macro dans la Feuil2
Private Sub ComboBox1_Change()
ActiveSheet.Range("G2").Value = ComboBox1.Value
End SubBonjour M12,
Je reviens sur ce sujet car ça fait depuis ce matin que je m'évertue à adapter le code que tu m'avais proposé sur mon document final et je n'y arrive pas (je suis vraiment mauvais en VBA ...).
Si tu veux bien, je vais reprendre ça par étape en te disant ce que j'ai compris de ton code, ce que j'ai fait et ce que je n'arrive pas à faire. Je pense que cela pourra également servi à d'autres personnes. N'hésites pas à me contredire ...
Etape 1 : Création d'un Userform dans lequel je viens insérer un combobox
Etape 2 : Codage du Combobox. Je double clique sur mon combobox, une fenêtre s'ouvre avec en choix par défaut Combobox1 et Change. Souhaitant définir mon Combobox je change les paramètres et choisis Userform et Initialize.
Le code que tu as écris est le suivant :
Private Sub UserForm_Initialize()
Dim List$
List = Sheets("Onglet B").Range("C1").Value
Me.ComboBox1.List = Sheets("Onglet B").Range(List).Value
End Sub
Si je comprend bien, par Onglet B tu indique l'onglet dans lequel se trouve ma base de données et par C1 la cellule qui va indiquer le choix à faire en fonction de la personne connectée. J'imagine que la ligne avec Me.Combobox1.List permet d'afficher la liste choisis dans le combobox, mais je ne comprend pas comment ça marche puisque là on ne localise pas les 3 bases de données ...
Etape 3 : Maintenant qu'on a notre combobox, il faut l'afficher pour qu'on puisse faire le choix à l'écran. Et là je n'arrive pas à faire cela ...
Sur le document que tu m'as transmis la semaine dernière on voit cela :
J'ai essayé d'insérer une zone de liste déroulante dans mon document et de lui mettre la formule =Incorporer("Forms.Combobox.1,","") comme tu avais fait mais j'ai en retour un message d'alerte Excel me disant : Nous n'avons pas trouvé de référence de plage ou de nom défini dans cette formule ... Or je ne vois pas dans ton code où tu as défini la formule ...
Bref, comme tu vois j'ai beaucoup de questions sans réponses qui me bloquent dans ma compréhension du problème et dans la réalisation d'une solution fonctionnelle...
Par avance merci,
Cordialement,
Hugo