Comment vérifié si il y a plus de valeur dans une listbox? [Résolu]

Signaler
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008
-
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008
-
Voilà, je suis toujours dans l'éditeur VB d'excel, maintent le souci, c'est que je fais une boucle jusqu'à ce que la listbox n'ai plus de charactère un trucs du style

For Row = 2 To 25000

If   ListBox1.List(i, 0) = "" Then      'Plante quand l'égalité est vrai... 
  Exit For
Else
.... -> fait le reste des calcules

Donc cela marche mais il me fait une erreur justement lorsque la vérification des données = vides, bam plantage... Existe il un autre moyen que les "" ou je sais pas trop... Parce qu'il parcourt toute la listbox jusqu'au moment ou l'égalité est vrai, c'est-à-dire qu'il n'y a plus rien, plantage sur cette ligne.

Voilà et merci d'avance!

6 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
La propriété ListCount d'une listbox te retourne le nombre de lignes, donc

For Row = 1 To Listbox1.ListCount - 1
...

Next


Comme les index commencent à 0, Il faut utiliser ListCount - 1 pour
éviter le débordement. C'est pas très logique, mais c'est comme ça...

MPi
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Lu,
(pour une histoire d'optimisation)
évite de mettre "" et utilise plutot vbnullstring
le "" <--- utilise un espace vide, donc un caractère qui va etre en mémoire
par contre VbnullString donne le meme resultat--> (vide) mais sans  etre stocker en mémoire par vb

sinon pour ta boucle

If   ListBox1.List(i, 0) = "" Then      'Plante quand l'égalité est vrai... 
  Exit For
Else
.... -> fait le reste des calcules

' tente ca
If ListBox1.List(i,0) <> Vbnullstring then 'si ya quelque chose ...
....-> on fait le reste des calcules
End if

'sinon

 If Not Nothing Is Listbox1.List(i,0)
....-> on fait le reste des calcules
End if
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

Nickel  Je vais tenter ça tout de suite, Merci BOmbJack!
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

si c'est logique....
le count commence par 1 alors que l'index par 0
 le nombre d'index  = .Count -1
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

l'autre méthode avec le vbnullstring ne marche pas, il me retourne la même erreur, je vais essayé avec le listcount ;o) Merci, je vous tiens au courant
Messages postés
51
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2008

excellente réponse , ça à marché sans souci  Mille merci!!!