VBA - Combobox - label + valeur [Résolu]

Messages postés
9
Date d'inscription
jeudi 29 avril 2004
Dernière intervention
18 octobre 2005
- 18 oct. 2005 à 09:54 - Dernière réponse :
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
- 18 oct. 2005 à 11:50
Bonjour,
y a t il moyen d'affecter à une combobox Excel une liste d'objets contenant un libellé et un indentifiant.

Par exemple, je voudrais affecter à une combo une liste de ce type :
item 1 : nom1, identifiant1
item 2 : nom2, identifiant2
item 3 : nom3, identifiant3

Lorsque la combo affiche les données, seuls noms1, noms2 et nom3 doivent apparaitre.
Puis, lorsqu'on sélectionne un des libellés, je voudrais récupérer l'identifiant associé.
Si on sélectionne nom2 dans la combobox, je voudrais récupérer identifiant2.

Merci de vos réponses
Arnaud
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
18 oct. 2005 à 11:50
3
Merci
Yes tu peux,
' On détermine le nombre de colonne de la Combo
ComboBox1.ColumnCount = 2
' On cache la colonne 2
ComboBox1.ColumnWidths = "200;0"
' On attribut les valeurs
' A1:B3 doit contenir des valeurs
ComboBox1.List() = [A1:B3].Value

Private Sub ComboBox1_Click()
' on récuper l'index
MsgBox ComboBox1.List(ComboBox1.ListIndex, 1)
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé

Merci valtrase 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Messages postés
797
Date d'inscription
mardi 7 juin 2005
Dernière intervention
23 février 2011
18 oct. 2005 à 10:54
0
Merci
C'est faisable, mais c'est une grosse bidouille. Tu n'as pas dans Excel la notion de Colonne liée comme dans ACCESS.

Je m'explique :
Classeur avec 2 feuilles.

Feuille 1 : Tes données.
Ce qui te donne un truc du genre
A1 : Nom1 B1 : Identifiant1
A2 : Nom1 B2 : Identifiant2
A3 : Nom3 B3 : Identifiant3

Tu sélectionnes la zone A1:A3 et tu lui donnes un nom (Menu insertion\Nom\Définir), par exemple ListeNoms.

Feuille 2 : Ton formulaire.
Tu vas sur la cellule où tu veux mettre ta combobox, par exemple B4.
Dans le menu Données\Validation, dans le premier onglet, tu choisis Autoriser Liste et comme source tu marques le nom de la zone (=ListeNoms dans mon exemple)

Tu as donc maintenant une cellule avec une liste déroulante correspondant à la liste des noms.

Il faut maintenant récupérer la correspondance :
Tu prends une cellule où tu veux la récupérer et tu lui donnes pour formule :
=RECHERCHEV(B4;Feuil1!A1:B3;2;FAUX)
Cette formule fait une recherche verticale :
La valeur recherchée est B4, c'est à dire le choix dans ta liste déroulante.
La matrice de recherche est ta feuille de données (Feuil1), dans la zone qui regroupe tous les noms et identifiants.
Le numéro de colonne où tu veux la correspondance est la 2ème.
FAUX désigne le fait que tu veuilles la valeur exacte, sinon, il peut te donner une valeur approchant (peu pratique dans les faits voir inutile à mon avis).

Cette méthode peut fonctionner quelque soit ton nombre d'arguments (tu pourrais avoir Nom, identifiant, Civilité, Sexe, Age, etc ...). La seule chose à modifier est le numéro de colonne que tu veux récupérer (2 à remplacer par 4, 6 ... ). Tu peux donc créer un formulaire qui se mette complètement à jour en fonction d'une combobox.

La seule contrainte de la fonction RechercheV, c'est qu'il faut que le critère recherché soit dans la première colonne (ici, le nom est forcément la 1ère colonne de ta matrice).

Voilà, plus qu'à adapter à ta sauce.
Molenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.