Menu déroulant VBA/excel

capc93 Messages postés 1 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 16 septembre 2004 - 16 sept. 2004 à 11:30
Boulet90 Messages postés 3 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 15 février 2006 - 15 févr. 2006 à 21:30
Bonjour,

Je débute en VBA/ Excel et depuis hier je bute sur un truc qui je suis sure est simple mais que je n'arrive pas surmonter...

J'ai fais une mini base Excel en feuill3 qui a cette tete la:

Nom code adherent Numéro adhérent
-------|--------------|---------------
dupont 04510 12345678910
durant 02500 10987654321

Mon problème est de récupérer ces valeurs dans une autre feuille.

J'ai mis un menu déroulant grace à la barre d'outil formulaire, je lui ai affecté la zone de valeurs correpondant aux noms. Le but est de récupéré les valeurs d'une ligne en fonction du nom choisi dans le menu déroulant.

Par exemple si je selectionne "dupont" dans on menu déroulant, je voudrai récupérer les valeurs "04510" et "12345678910" dans d'autre cellules.

Je n'arrive pas à definir mon menu déroulant en VBA, ni a lui demander ce que je veux faire...

Quelqu'un peut m'aider SVP?

Merci Bcp

5 réponses

dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010
17 sept. 2004 à 08:36
Bonjour,

Le mieux est de choisir 'Zone de liste modifiable' de la 'boîte à outils contrôles' car elle permet d'entrer les 1er caractères de la liste de choix pour se positionner dans la liste.
Dans les propriétés de cette zone de liste, indiquer sous 'ListFillRange' les cellules contenant la liste, sous 'LinkedCell' la cellule recevant le résultat de la liste.
Pour récupérer le contenu d'une des autres cellules, insérer la formule '=EQUIV(cellule de LinkedCell;cellules de ListFillRange;0)' dans une cellule masquée (donne l'index de la ligne du choix).
Enfin, dans la cellule devant récupérer l'autre valeur insérer la formule '=INDEX(cellules contenant autre valeur;cellule contenant EQUIV)'.

Exemple :
B1:B9 noms C1:C9 Numéros
ListFillRange=B1:B9
LinkedCell=D1 retourne le nom choisi dans liste
cellule E1 contient '= EQUIV(D1;B1:B9;0)' retourne N° de la ligne
cellule D2 contient '=INDEX(C1:C9;E1)' retourne Numéros

Bon(ne) courage, développement, salutation...
(choisissez ce qui vous convient) dp
0
Boulet90 Messages postés 3 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 15 février 2006
14 févr. 2006 à 22:03
Je suis aussi débutant et je n'arrive vraimment pas à faire un menu
déroulant avec des données sous excel dans la colone A de la feuille
active, et envoyer la valeur selectionnée dans une cellule de cette
meme feuille.



Merci de m'aider car je désespère de ne pas trouver mon bonheur !!



Boulet90
0
Boulet90 Messages postés 3 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 15 février 2006
14 févr. 2006 à 22:04
J'ai oublié de préciser que je veut créer le menu dans un Userform de VBA
0
dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010
15 févr. 2006 à 13:47
Bonjour,

L'exemple donné précédemment reste valable, il faut associer une plage à la propriété RowSource du combobox dans le form, une cellule pour recevoir le résultat du choix dans ce combobox par la propriété ControlSource.
La fonction EQUIV cherche la correspondance entre le contenu d'une cellule et celui d'une plage et retourne le N° de ligne.
La fonction INDEX retourne le contenu de la cellule correspondant au N° de ligne de EQUIV dans une plage définie.
Ci-après un lien vers un petit exemple : [www.favresa.ch/Ftp_file/Adherants.xls www.favresa.ch/Ftp_file/Adherents.xls.]

Bon(nes) courage, développement, salutations...
(choisissez ce qui vous convient) dp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Boulet90 Messages postés 3 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 15 février 2006
15 févr. 2006 à 21:30
Merci je vais méditer cela à tete reposée mais je pense que j'ai compris !



Merci pour tout !!



Boulet90
0
Rejoignez-nous