Question sur ItemData

beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 3 déc. 2008 à 16:15
 Profil bloqué - 3 déc. 2008 à 23:14
Bonjour tout le monde,


J'ai en fait une question sur ItemData.


J'ai le code ci-dessous :

Code :
tableau = Split("petit,3;grand,5", ";")
With comboTailleSupport
.Clear
Dim i AsInteger, element AsVariant
'de 0 au nombre d'élément dans le tableau
For i = 0To UBound(tableau)
element = Split(tableau(i), ",")
.AddItem element(0)
.ItemData(.NewIndex) = Val(element(1))
Next i

Je ne comprends pas trop cette ligne.


Je me pose aussi des questions sur l'utilité de ItemData (je vais quand même aller voir dans la FAQ si on en parle pas).


J'ai une deuxième question :


Je récupère dans une procédure la valeur de l'ItemData qui est par exemple 3.


J'aimerais juste ajouter dans le cas de 3 une combo box avec ces valeurs :


1

2

3


J'ai essayé d'utiliser ce code :

Code :
PrivateSub AfficherNombreBoules(ByVal NombreBoules AsLong)
MsgBox (comboTailleSupport.ItemData(comboTailleSupport.ListIndex))
For i = 0To NombreBoules
With comboNombreBoules
.AddItem Chr(i)
EndWith
Next i
comboNombreBoules.Visible = True
EndSub

Mais ça ne fonctionne pas.


Sauriez-vous m'aider svp ?


Un tout grand merci d'avance.


beegees

1 réponse

Profil bloqué
3 déc. 2008 à 23:14
tableau = Split("petit,3;grand,5", ";") ' tableau de 2 éléments "petit,3" et "grand,5"
With comboTailleSupport
.Clear ' on vide la liste comboTailleSupport
Dim i AsInteger, element AsVariant
'de 0 au nombre d'élément dans le tableau
For i = 0To UBound(tableau) ' Pour chaque élément du tableau
element = Split(tableau(i), ",") ' on sépare "petit" et "3"
.AddItem element(0) ' on ajoute "petit" dans la liste
.ItemData(.NewIndex) = Val(element(1)) ' voir note dans ce qui suit ( .ItemData(.NewIndex)= "3" associé à "petit"
Next i


<title>ItemData, propriété</title>
<style><![CDATA[import url(msdn_ie4.css);]]></style>
<link disabled="" href="msdn_ie3.css" rel="stylesheet" />


ItemData, propriété


<object id="alink_1" style="left: 10px; width: 70px; top: 57px; height: 18px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width="70" height="18">







</object>   
<object id="alink_2" style="left: 97px; width: 61px; top: 57px; height: 18px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width="61" height="18"></object>   
<object id="alink_3" style="left: 175px; width: 78px; top: 57px; height: 18px;" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width="78" height="18"></object>


Renvoie ou définit un numéro spécifique pour chaque élément d'un contrôle
ComboBox ou ListBox.



Syntaxe



object .ItemData(index) [ = number]


La syntaxe de la propriété ItemData comprend les éléments
suivants :


Élément,
Description,

----

object,
<object id= "alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">

</object>
Expression d'objet qui prend la valeur
d'un objet figurant dans la liste "Application".,

----

index,
Numéro d'un élément spécifique de l'objet.,

----

number,
Numéro à associer à l'élément
spécifié.




Remarques


La propriété ItemData est un tableau de valeurs d'entiers longs
comprenant le même nombre d'éléments que la propriété List d'un contrôle.
Vous pouvez utiliser le numéro associé à chaque élément pour identifier ces
éléments. Par exemple, vous pouvez utiliser le numéro d'identification des
employés pour identifier leur nom dans un contrôle ListBox. Lorsque vous
renseignez le contrôle ListBox, complétez également les éléments
correspondants du tableau ItemData avec le numéro des employés.


La propriété ItemData est souvent utilisée comme index dans un tableau
de structures de données associé aux éléments d'un contrôle ListBox.




Note
   Lorsque vous insérez un élément dans une
liste à l'aide de la méthode AddItem, un élément est aussi
automatiquement inséré dans le tableau ItemData. La valeur de la
propriété n'est toutefois pas remise à zéro ; l'élément conserve la valeur qui
occupait cette position avant l'ajout du nouvel élément à la liste. Lorsque vous
utilisez la propriété ItemData, veillez à définir sa valeur dès que vous
ajoutez des éléments à une liste.

Pour ta seconde question il faut mettre

For i = 1 To NombreBoules
With comboNombreBoules
.AddItem Chr(i+48) ' le chiffre 0 a comme code Ascii 48 (en décimal), le chiffre 1 c'est 49, etc... jusqu'à 9 avec 56 en ASCII
EndWith
Next i

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Rejoignez-nous