Value dans une listBox

Value dans une listBox - VB/VBA/VBS - Programmation

Marsh Posté le 05-05-2005 à 18:04:22    

Salut !
 
Voici un script d'écriture d'une listBox à partir d'une requete :
 

Code :
  1. ' Ecriture de la requete pour les valeurs du combobox des auteurs
  2.         requete = "SELECT id,nom,prenom FROM auteurs"
  3.         BibliBase.CommandText = requete
  4.     ' Lancement de la requete
  5.         Set resultRech = BibliBase.Execute
  6.     ' Ecriture des valeurs dans le ComboBox
  7.         Do While Not resultRech.EOF
  8.           field = resultRech!prenom & " " & resultRech!nom
  9.           Auteur.AddItem field
  10.           resultRech.MoveNext
  11.         Loop


 
Ce que je veux, c'est pourvoir affecter chaque ligne de mon listBox à un id. Comme en html /php avec un <option value=$id">$nom</option>
Seulement, je ne trouve pas comment faire, dois je utiliser un tableau ?
 
Merci :jap:

Reply

Marsh Posté le 05-05-2005 à 18:04:22   

Reply

Marsh Posté le 06-05-2005 à 11:56:24    

up!

Reply

Marsh Posté le 06-05-2005 à 16:47:10    

up!

Reply

Marsh Posté le 06-05-2005 à 20:19:49    

hi hi, tu vas rire.
 
Dans VB (et VBA) toute liste et combobox possède un id, nommé index.
 
La première valeur à l'index 0, la seconde 1 ...
Pour y faire appel : ' Me.List1.ListIndex ' pour une liste nommée List1.  
Note, la valeur -1 signifie qu'aucune ligne n'a été sélectionné.

Reply

Marsh Posté le 07-05-2005 à 18:32:25    

Oui, ça j'avais vu, mais ce dont moi j'ai besoin, ce sont des index correspondant aux libellés !
Ce que je veux dans la listbox, ce sont par exemple les éléments : tutu avec un index 4 et toto avec un index 54
Une simple incrémentation des valeurs ne me suffit pas :jap:
 
le listbox.index ne me permet pas de faire ça ? :??:

Reply

Marsh Posté le 07-05-2005 à 21:30:26    

Elle est auto incrémentée. si tu veux toi fournir l'index que tu veux, il faut que tu fasse cela :
Auteur.AddItem nom_item, Index_choisi.

Reply

Marsh Posté le 08-05-2005 à 12:49:06    

Ok d'accord, c'est ce que j'avais tenté de faire au début. Mais mon problème, c'est que ça génére une erreur lors de l'execution quand je balance un id en paramètre.
 

Code :
  1. ' Ecriture de la requete pour les valeurs du combobox des auteurs
  2.         requete = "SELECT id,nom,prenom FROM auteurs"
  3.         BibliBase.CommandText = requete
  4.     ' Lancement de la requete
  5.         Set resultRech = BibliBase.Execute
  6.     ' Ecriture des valeurs dans le ComboBox
  7.         Do While Not resultRech.EOF
  8.           field = resultRech!prenom & " " & resultRech!nom
  9.           Auteur.AddItem field, resultRech!id
  10.           resultRech.MoveNext
  11.         Loop


 
Me fait une erreur : invalid procedure call or argument.
D'après ce que j'ai compris, c'est parce que mon ListCount est à 0 lorsque je veut insérer un index.
Mais je ne comprend pas comment faire alors :(

Reply

Marsh Posté le 08-05-2005 à 13:34:19    

En fait tu veux avoir l 'index de tes références pour pouvoir les rappeller plus tard ?

Reply

Marsh Posté le 08-05-2005 à 13:52:26    

Oui, pour une future insertion en base de l'id correspondant :jap:

Reply

Marsh Posté le 08-05-2005 à 14:12:55    

ok. En fait le mieux pour toi serai de créer une seconde list (dison LstId) et mettre la propriété 'visible' a 'false'.
Ainsi ton code deviendrai celui-ci
 
 

Code :
  1. ' Ecriture de la requete pour les valeurs du combobox des auteurs
  2.   requete = "SELECT id,nom,prenom FROM auteurs"
  3.   BibliBase.CommandText = requete
  4. ' Lancement de la requete
  5.   Set resultRech = BibliBase.Execute
  6. ' Ecriture des valeurs dans le ComboBox
  7. Do While Not resultRech.EOF
  8.   field = resultRech!prenom & " " & resultRech!nom
  9.   Auteur.AddItem field
  10.   LstId.AddItem resultRech!id
  11.   resultRech.MoveNext
  12. Loop


 
Ensuite, quand l'utilisateur sélectionnera le nom d'utilisteur de la liste 1, il te suffira de faire correspondre les valeurs (qqch du style 'id = Me.LstId.List(Auteur.Listindex)' ).
 
Note : il ne faut pas que les 2 liste aient la propriété d'être classées par ordre alaphabétique, sinon ce sera pas beau.
 

Reply

Marsh Posté le 08-05-2005 à 14:12:55   

Reply

Marsh Posté le 08-05-2005 à 14:36:34    

Génial, merci knakes ça marche :jap:
 
J'aurais pas pensé à utiliser ce genre de technique. Je trouve ça quand même bizzare que l'on puisse 'difficilement' faire correspondre une valeur à un élément de la liste :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed