Supprimer plusieurs lignes à partir d'une checkbox

Résolu
SEB83200 Messages postés 34 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 11 juin 2013 - 8 mars 2010 à 16:08
SEB83200 Messages postés 34 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 11 juin 2013 - 15 mars 2010 à 07:47
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

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
15 mars 2010 à 00:05
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.
3
SEB83200 Messages postés 34 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 11 juin 2013
12 mars 2010 à 19:06
Bonjour,

Personne ne peu m'aider?

Merci.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 mars 2010 à 13:04
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.
0
SEB83200 Messages postés 34 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 11 juin 2013
14 mars 2010 à 12:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SEB83200 Messages postés 34 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 11 juin 2013
15 mars 2010 à 07:47
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
0
Rejoignez-nous