IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème de suppression des lignes d'1 datagridview [Débutant]


Sujet :

VB.NET

  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut Problème de suppression des lignes d'1 datagridview
    Bonjour

    je veux supprimer qlq lignes dans 1 datagridview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i As Integer = 0 To Me.datagridview1.RowCount - 1
        If Me.datagridview1.Rows(i).Cells(5).Value = 0 Then
           Me.datagridview1.Rows.Remove(Me.datagridview1.Rows(i))
        End If
    Next
    mais j'ai l'erreur suivante : L'index était hors limites.

    le problème est que j'ai Me.DataGridview1.RowCount = 20
    et aprés qlq lignes supprimées le Me.DataGridview1.RowCount < à 20
    par contre La boucle For est engagée à terminé jusqu'au 20 se qui génère l'erreur

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Par défaut
    Salut abd75web,
    Utilise des boucles for each,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each row As DataGridViewRow In Me.dgv.Rows
         If row.Cells(5).Value = 0 Then
              Me.dgv.Rows.Remove(row)
         End If
    Next

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Citation Envoyé par chaparo Voir le message
    Salut abd75web,
    Utilise des boucles for each,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each row As DataGridViewRow In Me.dgv.Rows
         If row.Cells(5).Value = 0 Then
              Me.dgv.Rows.Remove(row)
         End If
    Next
    Ça va casser si il supprime des éléments de la collection en cours de parcours...

    Tu peux essayer un truc dans ce genre là abd75web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Dim rowsToRemove As New List(Of Integer)
     
            For Each row As DataGridViewRow In Me.DataGridView1.Rows
                If row.Cells(5).Value = 0 Then
                    rowsToRemove.Add(row.Index)
                End If
            Next
     
            For Each i As Integer In rowsToRemove
                DataGridView1.Rows.RemoveAt(i)
            Next
    Par contre je te conseil de mettre le nom de ta colonne plutôt que son index pour la retrouver parce que si jamais un jour tu changes l'ordre des colonnes il faudra tout modifier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                If row.Cells("columnName").Value = 0 Then
                    rowsToRemove.Add(row.Index)
                End If

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Merci les amis

    mais avoir tester les deux propositions j'ai l'erreur suivante


    Impossible de supprimer la nouvelle ligne non validée.....

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    C'est parce que tu essaye de supprimer la dernière ligne de ton DGV qui est vide et non valide. Il faut que tu mettes la propriété AllowUserToAdd de ton DGV à False ou que tu vérifie que la ligne que tu supprimes n'est pas la dernière de ton DGV.

  6. #6
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Merci Shadam et surtout pour le conseil de mettre le nom de la colonne plutôt que l'index c'est précieux...



    seulement pour le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim rowsToRemove As New List(Of Integer)
     
         For Each row As DataGridViewRow In Me.DataGridView1.Rows
                If row.Cells(5).Value = 0 Then
                    rowsToRemove.Add(row.Index)
                End If
            Next
     
            For Each i As Integer In rowsToRemove
                DataGridView1.Rows.RemoveAt(i)
            Next

    genere tjrs l'erreur : L'index de ligne fourni est hors limites

    parce que dés qu'une ligne sera suprimée les row.index de la dgv seront modifiés donc la liste rowsToRemove ne sera pas utile

    pour le momonet j'ai tester la proposition de chaparo et ca fonctionne bien

    merci a+

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Citation Envoyé par abd75web Voir le message
    dés qu'une ligne sera suprimée les row.index de la dgv seront modifiés donc la liste rowsToRemove ne sera pas utile
    Huummmm... Oui c'est pas faux


    Par contre pense à mettre le topic en

  8. #8
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    au fait la proposition de Shadam et mellieur mais seulement en utilisant DataGridViewRow et non l'index de la ligne



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                Dim rowsToRemove As New List(Of DataGridViewRow)
     
                For Each row As DataGridViewRow In DataGridViewRow1.Rows
                    If row.Cells(5).Value = 0 Then
                        rowsToRemove.Add(row)
                    End If
                Next
     
                For Each i As DataGridViewRow In rowsToRemove
                    DataGridViewRow1.Rows.Remove(i)
                Next

    merci...............

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. suppression des ligne ds une table
    Par roger.pouamoun dans le forum Oracle
    Réponses: 6
    Dernier message: 28/07/2006, 13h00
  2. [Excel & D7]Problème de suppression de lignes
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 14/03/2006, 10h00
  3. [image] Problème de suppression des max locaux avec Canny
    Par Rafoo dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 06/11/2005, 01h22
  4. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 09h14
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo