OVH Cloud OVH Cloud

Parcourir une listbox

3 réponses
Avatar
Jérôme Salamin
Bonjour,

Ce que je souhaite réaliser est en apparence simple, mais je n'ai trouvé
aucune méthode pour le faire...

Je souhaite parcourir tous les éléments d'une listbox et construire une
chaine (ex : "1,2,3,4") contenant les valeurs de ma listbox.

J'ai pensé que le code suivant ferait mon bonheur :

Dim cdgroupes As String
Dim i As Long
cdgroupes = ""

For i = 0 To lstTous.ListCount - 1
lstTous.ListIndex = i
cdgroupes = cdgroupes + CStr(lstTous.Value) + ","
Next i

cdgroupes = Left(cdgroupes, Len(cdgroupes) - 1)

malheureusement, et malgré l'aide qui dit ceci :
"La propriété ListIndex permet de déterminer l'élément sélectionné dans une
zone de liste ou une zone de liste modifiable. Long en lecture/écriture."

lorsque le code tente d'exécuter la ligne : lstTous.listindex = i

j'obtiens le message d'erreur : "Erreur d'exécution '7777': Utilisation
incorrecte de la propriété ListeIndex" (remarquez au passage l'erreur de
traduction du msg d'erreur... ListIndex devient ListeIndex".

Qlqn a t'il déjà rencontré le même problème, y'a t'il un moyen d'y échapper
?

D'avance merci

Jérôme

3 réponses

Avatar
Raymond
Bonjour.

Pour récupérer les valeurs du rowsource d'une listbox ou d'une combobox il
faut appeler chaque ligne:

Dim msg As String
Dim I As Integer
For I = 0 To Me.Liste1.ListCount - 1
msg = msg & Me.Liste1.Column(0, I) & ","
Next

Dim msg As String
Dim I As Integer
For I = 0 To Me.Modifiable1.ListCount - 1
msg = msg & Me.Modifiable1.Column(0, I) & ","
Next

Si le rowsource de la listebox ou de la combobox est basé sur une liste de
valeurs on peut directement récupérer la valeur par:
msg = Me.Modifiable1.RowSource


Dans le rowsource les données sont séparées par ";" il serait préférable de
choisir ce code pour séparer les données au lieu de la ","

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Jérôme Salamin" <jerome.salaminCHEZcimtec.ch Remplacez CHEZ par @> a écrit
dans le message de news:%
Bonjour,

Ce que je souhaite réaliser est en apparence simple, mais je n'ai trouvé
aucune méthode pour le faire...

Je souhaite parcourir tous les éléments d'une listbox et construire une
chaine (ex : "1,2,3,4") contenant les valeurs de ma listbox.

J'ai pensé que le code suivant ferait mon bonheur :

Dim cdgroupes As String
Dim i As Long
cdgroupes = ""

For i = 0 To lstTous.ListCount - 1
lstTous.ListIndex = i
cdgroupes = cdgroupes + CStr(lstTous.Value) + ","
Next i

cdgroupes = Left(cdgroupes, Len(cdgroupes) - 1)

malheureusement, et malgré l'aide qui dit ceci :
"La propriété ListIndex permet de déterminer l'élément sélectionné dans
une

zone de liste ou une zone de liste modifiable. Long en lecture/écriture."

lorsque le code tente d'exécuter la ligne : lstTous.listindex = i

j'obtiens le message d'erreur : "Erreur d'exécution '7777': Utilisation
incorrecte de la propriété ListeIndex" (remarquez au passage l'erreur de
traduction du msg d'erreur... ListIndex devient ListeIndex".

Qlqn a t'il déjà rencontré le même problème, y'a t'il un moyen d'y
échapper

?

D'avance merci

Jérôme




Avatar
Jérôme Salamin
Super, c'est ce qu'il me fallait ! merci beaucoup !

"Raymond" a écrit dans le message de news:
#
Bonjour.

Pour récupérer les valeurs du rowsource d'une listbox ou d'une combobox il
faut appeler chaque ligne:

Dim msg As String
Dim I As Integer
For I = 0 To Me.Liste1.ListCount - 1
msg = msg & Me.Liste1.Column(0, I) & ","
Next

Dim msg As String
Dim I As Integer
For I = 0 To Me.Modifiable1.ListCount - 1
msg = msg & Me.Modifiable1.Column(0, I) & ","
Next

Si le rowsource de la listebox ou de la combobox est basé sur une liste de
valeurs on peut directement récupérer la valeur par:
msg = Me.Modifiable1.RowSource


Dans le rowsource les données sont séparées par ";" il serait préférable
de

choisir ce code pour séparer les données au lieu de la ","

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Jérôme Salamin" <jerome.salaminCHEZcimtec.ch Remplacez CHEZ par @> a
écrit

dans le message de news:%
Bonjour,

Ce que je souhaite réaliser est en apparence simple, mais je n'ai trouvé
aucune méthode pour le faire...

Je souhaite parcourir tous les éléments d'une listbox et construire une
chaine (ex : "1,2,3,4") contenant les valeurs de ma listbox.

J'ai pensé que le code suivant ferait mon bonheur :

Dim cdgroupes As String
Dim i As Long
cdgroupes = ""

For i = 0 To lstTous.ListCount - 1
lstTous.ListIndex = i
cdgroupes = cdgroupes + CStr(lstTous.Value) + ","
Next i

cdgroupes = Left(cdgroupes, Len(cdgroupes) - 1)

malheureusement, et malgré l'aide qui dit ceci :
"La propriété ListIndex permet de déterminer l'élément sélectionné dans
une

zone de liste ou une zone de liste modifiable. Long en
lecture/écriture."



lorsque le code tente d'exécuter la ligne : lstTous.listindex = i

j'obtiens le message d'erreur : "Erreur d'exécution '7777': Utilisation
incorrecte de la propriété ListeIndex" (remarquez au passage l'erreur de
traduction du msg d'erreur... ListIndex devient ListeIndex".

Qlqn a t'il déjà rencontré le même problème, y'a t'il un moyen d'y
échapper

?

D'avance merci

Jérôme







Avatar
Jérôme Salamin
C'est vendredi, on pardonne tout, mais le listeTous.listindex(i) ne
fonctionne pas (ça avait été ma première idée d'ailleurs :)

Merci d'avoir essayé ! :)
"joyeux atchoum" a écrit dans le message de news:

s'lt

Dim cdgroupes As String
Dim i As Long
cdgroupes = ""

For i = 0 To lstTous.ListCount - 1
lstTous.ListIndex = i
cdgroupes = cdgroupes + CStr(lstTous.Value) + ","
Next i

cdgroupes = Left(cdgroupes, Len(cdgroupes) - 1)


sans avoir utilier listindex
je dirais plutot lstous.listindex(i) plutot, cela me semblerai plus
logique mais je peux me planter

enfin je dois pas etre en forme aujourd'hui j'ai l'impression de dire
une connerie et qu'en plus je connais la soluce mais j'ai du mal à me
concentrer

bon c'etait un post semble t il inutile

ja:)
quand il commence il ne s'arrete plus meme dans la betise ;=)