OVH Cloud OVH Cloud

Supprimer des lignes

5 réponses
Avatar
Daniel AUBRY
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.

Une idée ?


Dany

5 réponses

Avatar
Jean-Marc
"Daniel AUBRY" a écrit dans le message de
news:419a5b14$0$30303$
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.




Hello,

- Utiliser un Do While ... Loop à la place du for
- Tester la valeur de Grille.rows avant tout remove
- Forcer la sortie de boucle Exit Do au bon moment

D'une manière générale:
- Le For .. Next est un vrai piège pour les delete/remove dans
les structures de type ListBox, Grid, etc
- Programmer défensif: avant de faire un remove ou un delete, on
s'assure de l'existence de l'item en question

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
Hervé
Salut Daniel,
Commence par la fin,

For i = Grille.Rows - 1 To 1 Step -1
If Grille.TextMatrix(i, 4) > 100 Then
Grille.RemoveItem i
End If
Next

Hervé.

"Daniel AUBRY" a écrit dans le message news:
419a5b14$0$30303$
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.

Une idée ?


Dany




Avatar
Daniel AUBRY
Merci, je tente.

Dany
"Hervé" a écrit dans le message de news:

Salut Daniel,
Commence par la fin,

For i = Grille.Rows - 1 To 1 Step -1
If Grille.TextMatrix(i, 4) > 100 Then
Grille.RemoveItem i
End If
Next

Hervé.

"Daniel AUBRY" a écrit dans le message news:
419a5b14$0$30303$
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.

Une idée ?


Dany








Avatar
Driss HANIB
le plus simple est de commencer par la fin, comme cela tu ne dépasseras
pas..
c'est ce que moi je fais..
Driss
"Daniel AUBRY" a écrit dans le message de
news:419a5b14$0$30303$
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.

Une idée ?


Dany




Avatar
Daniel AUBRY
J'ai fait cela aujourd'hui et ça marche.
Fallait y penser !!
Encore merci

Dany

"Hervé" a écrit dans le message de news:

Salut Daniel,
Commence par la fin,

For i = Grille.Rows - 1 To 1 Step -1
If Grille.TextMatrix(i, 4) > 100 Then
Grille.RemoveItem i
End If
Next

Hervé.

"Daniel AUBRY" a écrit dans le message news:
419a5b14$0$30303$
Bonjour à tous,

je souhaite supprimer toutes les lignes d'un MsFlexGrid
ayant une certaine valeur.

Mon idée était :

For i = 1 to Grille.Rows -1
If Grille.TextMatrix(i, 4) > 100 then
Grille.RemoveItem i
End If
Next

Mais ça plante avant la fin car i fini par
se trouver supérieur à Grille.Rows -1 actualisé.

Une idée ?


Dany