Une ListBox avec un affichage et une valeur différente. [Résolu]

Signaler
Messages postés
112
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
20 novembre 2006
-
Messages postés
6
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
22 juin 2006
-
Bonjour à tous et à toutes,

Je voudrais savoir s'il est possible de donner à des éléments d'une ListBox une valeur différente de leur ListBox.Value qui donne ce qui est affiché comme texte.

En fait un peu comme s'il y'avait 2 propriétés différentes (de base identiques) : La valeur attribuée, et la valeur affichée dans la sélection.
Par ex., une liste de projets s'affiche dans le ListBox, possédant chacun un ID unique, et je voudrais que ce soit cet ID qui soit enregistré comme valeur et non le nom du projet, qui lui est affiché par contre (plus simple de choisir par NOM pour un utilisateur, mais de chercher par ID pour le programme).

Je récupère déjà l'ID en meme temps que le nom, juste après le nom, entre parentheses, mais je voudrais donc que ce ne soit que cet ID qui soit récupéré quand j'appelle ListBox.Value et non pas le nom et l'ID entre parentheses.

Voilà je ne sais pas si j'ai été bien clair ou si c'est possible ... mais merci d'avance pour une réponse !

@+



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>

7 réponses

Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Je pense que c'est assez clair!

Donc a mon avis le plus simple est d'associé un tableau a 2 dimensions a ta listbox

Je m'explique

Dans ta listbox tu a des ID

Dans chaque case de ton tableau tu as un tableau de 2 cases comprenant l'id et la valeur associé a cet ID



ex de tableau:

ID1 ; ID2 ; ID3 ...

ValID1;ValID2;ValID3...



Apres il ne reste plus qu'a associé l'index de l'élément dans ta listbox a l'index du tableau pour récupéré tes infos
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
26
tu peux utiliser ItemData

mais c'est que du numérique.







For i = 0 To 10

x = Rnd * 15

List1.AddItem x

List1.ItemData(i ) = i

Next


Private Sub List1_Click()

MsgBox List1.ItemData(List1.ListIndex)

End Sub


Daniel
Messages postés
112
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
20 novembre 2006

Merci pour vos réponses !

Daniel, en fait celà ne me va pas, car dans mes ID uniques, il y'a du numérique mais aussi du texte (ID groupés par genre de projet : Axxxx, Bxxxx, ...)

fcampagne, je ne sais pas si j'ai bien fait ce que tu m'as dit, mais le fait est que j'ai réussi à faire ce que je voulais.

En fait j'utilise un tableau des projets sur une nouvelle feuille excel, dans lequel est stocké, un peu comme dans une table de base de donnée, le nom du projet, son ID et son commentaire.
Ainsi, en repérant le nom, je repère la ligne, et du coup l'ID.

Je ne sais pas s'il est possible de faire un tableau "virtuel" sous forme de variable dans lequel j'inscrirais ces données, ce qui me permettrait d'éviter la nouvelle feuille, mais finalement cette nouvelle feuille va m'être utile.

Donc merci pour l'astuce ;)

@+



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Oui tu peux faire ca dans un tableau virtuel avec le type Array

dim tableid() as Array

dim enregistrement(2) as string



exemple d'utilisation

tableid(0)=enregistrement

'un tableau de 2 cases dans un tableau



Dans le principe, ta feuille excel c'est bon, c'est exactement le méme principe que les tableau!
Messages postés
112
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
20 novembre 2006

Ok je vois,

Mais comme maintenant je vais avoir besoin de ce tableau dans plusieurs programmes, autant le garder dans une feuille ;)

Encore merci !



<HR>

$p00ky
______________________________________________
.:: KoC-FR ::. Alliance Francophone Kings of Chaos
Venez jouer au meilleur MMORPG gratuit et facile !</FON< body>
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
Salut, j'arrive un peu tard mais il il y a une solution qui marche avec vb6 comme vb.net : la listview.
Voir les propriétés Key et Tag qui sont bien utiles dans le cas présenté et surement moins lourd à gérer qu'un tableau supplémentaire.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
6
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
22 juin 2006

Pourquoi ne pas simplement utiliser la propriété BoundColumn ?

On peut tout à fait charger 3 colonnes dans une listbox, n'en afficher que 2 et par cette propriété demander que la valeur soit la 3ème colonne.

Pascal D.