Supprimer plusieurs lignes à partir d'une checkbox [Résolu]

Signaler
Messages postés
34
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
11 juin 2013
-
Messages postés
34
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
11 juin 2013
-
Bonjour,

J'ai un mshflexgrid qui contient 8 colonnes et 2 lignes.

L'utilisateur clique sur un bouton pour ajouter des lignes, jusque là pas de probléme.

J'ai une ligne fixe et une colonne fixe.

J'ai mis une checkbox dans la colonne 1, juste après la colonne fixe.

J'aimerai que lorsque l'utilisateur selectionne une ou plusieurs lignes et qu'il clic sur supprimer que les lignes selectionné le sois.

J'ai fait quelque essais et le code que j'ai ne marche que si on supprime la derniere ligne...

Quelqu'un peut m'aider?

Voici mon code :

Private Sub ReyCommand4_Click()
Dim i As Integer


With MSHFlexGrid1
For i = 1 To .Rows - 1

If MSHFlexGrid1.TextMatrix(i, 1) = strChecked Then

MSHFlexGrid1.RemoveItem (i)

End If
Next i
End With

End Sub

5 réponses

Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Effectivement...!

Explication:l' index est décalé
quand il supprime une ligne.

Solution:
Ajoutes i=i-1 à l' emplacement indiquée

With MSHFlexGrid1
k=.Rows - 1
i=0
Do While i < k
i=i+1
If MSHFlexGrid1.TextMatrix(i, 1) = strChecked Then
MSHFlexGrid1.RemoveItem (i)
k=k-1
i=i-1
End If
Loop
End With
[] Ce qui va sans dire. va mieux en le disant.
Messages postés
34
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
11 juin 2013

Bonjour,

Personne ne peu m'aider?

Merci.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,
En supprimant une ligne, le nombre de lignes effectif
ne correspont plus à ton .Rows - 1 de départ.
D' ou une erreur au niveau de TextMatrix(i, 1).

Essaies ceci ...
Dim k As Integer

With MSHFlexGrid1
k=.Rows - 1
i=0
Do While i < k
i=i+1
If MSHFlexGrid1.TextMatrix(i, 1) = strChecked Then

MSHFlexGrid1.RemoveItem (i)
k=k-1
End If
Loop
End With

End Sub
[] Ce qui va sans dire. va mieux en le disant.
Messages postés
34
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
11 juin 2013

Bonjour,

Merci pour ta réponse.

Ton code fonctionne pratiquement bien sauf qu'il ne me supprime pas toutes les lignes selectionne, il faut clique deux a trois fois pour qu'il les supprime toutes.

Exemple : Je selectionne 5 lignes, il supprime la 1ere, la 3eme et la derniere mais pas la deuxieme et pas la 4 eme

As-tu une idee?

Encore Merci
Messages postés
34
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
11 juin 2013

Bonjour,

J'en est fais des reves cette nuit et j'y ai pensé ce matin....lol..


Merci beaucoup pour ton aide.

Bonne journée