Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
980 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Value dans une listBox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Value dans une listBox

n°1073063
Sinan
Posté le 05-05-2005 à 18:04:22  profilanswer
 

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:

mood
Publicité
Posté le 05-05-2005 à 18:04:22  profilanswer
 

n°1073730
Sinan
Posté le 06-05-2005 à 11:56:24  profilanswer
 

up!

n°1074106
Sinan
Posté le 06-05-2005 à 16:47:10  profilanswer
 

up!

n°1074347
knakes
Posté le 06-05-2005 à 20:19:49  profilanswer
 

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é.

n°1074974
Sinan
Posté le 07-05-2005 à 18:32:25  profilanswer
 

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 ? :??:

n°1075131
knakes
Posté le 07-05-2005 à 21:30:26  profilanswer
 

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.

n°1075462
Sinan
Posté le 08-05-2005 à 12:49:06  profilanswer
 

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 :(

n°1075487
knakes
Posté le 08-05-2005 à 13:34:19  profilanswer
 

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

n°1075498
Sinan
Posté le 08-05-2005 à 13:52:26  profilanswer
 

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

n°1075515
knakes
Posté le 08-05-2005 à 14:12:55  profilanswer
 

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.
 

mood
Publicité
Posté le 08-05-2005 à 14:12:55  profilanswer
 

n°1075541
Sinan
Posté le 08-05-2005 à 14:36:34  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Value dans une listBox

 

Sujets relatifs
Couleurs dans une ListBox (Perl/Tk)listbox a deux colonnes
Recupération des éléments d'une Listboxcomment ajouter un champs d'une bdd dans une listbox
ListBox et événement ChangeAjouter un item à une listbox en VB
[c#] [form] listbox double click itemprobleme d'affichage dans une listbox
Multicolonne Listbox Ms Form 2Problème Listbox en VBA
Plus de sujets relatifs à : Value dans une listBox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR