Une ListBox avec un affichage et une valeur différente.

Résolu
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 - 8 août 2005 à 14:43
BadFog Messages postés 6 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 22 juin 2006 - 8 août 2005 à 18:49
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

fcampagne Messages postés 195 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 13 juillet 2006 3
8 août 2005 à 15:12
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 août 2005 à 15:29
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
0
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 1
8 août 2005 à 16:31
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>
0
fcampagne Messages postés 195 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 13 juillet 2006 3
8 août 2005 à 16:37
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!
0

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

Posez votre question
cs_Sp00ky Messages postés 112 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 20 novembre 2006 1
8 août 2005 à 16:42
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>
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
8 août 2005 à 16:50
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 !?
0
BadFog Messages postés 6 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 22 juin 2006
8 août 2005 à 18:49
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.
0
Rejoignez-nous