yafee
Messages postés34Date d'inscriptionlundi 27 décembre 2010StatutMembreDernière intervention 8 janvier 2011
-
11 juin 2009 à 11:18
yafee
Messages postés34Date d'inscriptionlundi 27 décembre 2010StatutMembreDernière intervention 8 janvier 2011
-
19 juin 2009 à 10:47
Bonjour,
J'ai une liste alimentée par une liste déroulante, ma propriété multiselect est a 1 - simple car j'ai besoin qu' a chaque fois que je rajoute un élément dans ma liste il soit automatiquement selectionne.
J'ai fait un petit code pour supprimer les elements selectionnes mais quand je n'en selection aucun voici l'erreur qui s'affiche : "Argument ou appel de procedure incorrect"
Quans je change la propriete multiselect a 0 - none ce probleme n'apparait pas.
Voici le code :
Dim i As Integer
i = liste1.ListIndex ' Affiche l'index
If i >= 0 Then' Vérifie qu'un élément de la liste est sélectionné
liste1.RemoveItem i ' Supprime l'élément de la zone de liste
Else
Beep
End If
Quelqu'un a une idee? (en sachant qu'il faut que je garde le multiselect a 1 - simple pour laisser les elements selectionne)?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 juin 2009 à 16:17
Salut
Combien d'item dans ta ListBox ?
Quel est l'item (n°) sélectionné au moment de l'erreur ?
Que vaut ta variable i au moment de l'erreur ?
Sur quelle ligne apparait cette erreur ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 juin 2009 à 16:25
ListIndex te renvoie l'index (de 0 à ListCount - 1) de l'item auquel tu as touché la dernière fois, qu'il soit sélectionné ou pas.
Il n'est donc pas l'image d'une sélection.
.SelCount te renverra le nombre d'item sélectionnés, mais ne te dira pas lesquels.
Pour savoir si un item est sélectionné ou pas, il faut tous les passer en revue (boucle For-Next) de 0 à ListCount - 1, ou plutôt de ListCount - 1 à 0 et vérifier si .Selected(x) vaut True.
Oui, il faut commencer par la fin et remonter vers 0 car si tu supprimes l'item 0 (le 1er), le 2ème qui était l'item 1, devient l'item 0 - tu risques donc d'en passer involontairement ou de demander à supprimer un n° d'Item qui n'est plus là.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
yafee
Messages postés34Date d'inscriptionlundi 27 décembre 2010StatutMembreDernière intervention 8 janvier 2011 15 juin 2009 à 09:57
Le problème c'est que tous les items sont sélectionnés et donc ce code supprime celui sur qui je clique (et qui n'est donc plus sélectionné).
Le nombre d'item change tout le temps car c'est moi qui décide combien j'en mets.
C'est quand je ne sélectionne aucun item qu'il y a l'erreur
au moment de l' erreur i = 0
L'erreur apparait sur : liste1.RemoveItem i ' Supprime l'élément de la zone de liste
Quand je ne sélectionne rien ListIndex = 0
J'ai donc changeIf i >= 0 Then par If i > 0 Then et ça fonctionne mais je ne peux pas supprimer le premier.