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 limite d'indice tableau


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut Problème limite d'indice tableau
    Bonjour,

    Alors je ne comprends pas trop ce qui m'arrive. Déjà voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To NbIndex - 1
                gridview_tbl.Rows.RemoveAt(tabsup(i))
            Next
    Travaille sous visual studio 2012 (vb.net) et access 2013 (mdb).

    Mon NbIndex vaut 22, donc j'ai un tableau qui va de 0 à 21.
    Ma boucle va donc de 0 à 21. Et ma boucle s'arrête pour i=1 me disant "L'index de ligne fourni est hors limites." ... Mon tableau à une taille de 22 je ne comprends pas pourquoi il dépasse à 1.
    Des idées de pourquoi de comment ?

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Apparemment ton datagridview ne comporte qu'une seule ligne, raison pour laquelle cette exception est levée quand tu tentes d'aller au delà.
    N'oubliez pas le tag et

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    J'ai déjà vérifié et si j'enlève ma boucle, mon datagridview comporte presque une trentaine (il me semble) de lignes.
    C'est pour ça que je trouve ça bizarre, j'ai un tableau qui à 22 éléments et un datagridview qui en à au moins 22 ... Je ne vois pas d'où vient mon soucis

  4. #4
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Je viens de revoir ton code. C'est quoi ton tabsup(i)? Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To NbIndex - 1
      gridview_tbl.Rows.RemoveAt(tabsup(i))
    Next
    est-ce qu'il ne faut pas plutot mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To NbIndex - 1
      gridview_tbl.Rows.RemoveAt(i)
    Next
    ?
    N'oubliez pas le tag et

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Citation Envoyé par Callo
    Je viens de revoir ton code. C'est quoi ton tabsup(i)?
    Effectivement...

    Lorsque tu supprimes la ligne d'indice 0, la ligne d'indice 1 passe à l'indice 0 ...
    Pour supprimer des éléments d'une collection dans une boucle, soit tu boucles à l'envers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = NbIndex - 1 to 0 step -1
      gridview_tbl.Rows.RemoveAt(i)
    Next
    Soit tu supprimes systématiquement le premier élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To NbIndex - 1
      gridview_tbl.Rows.RemoveAt(0)
    Next
    Je ne peux pas tester mais ça devrait fonctionner.
    eb.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Je n'y avait pas pensé. Mais ce que vous me dites ça va supprimer toutes les lignes de mon datagridview en fait non ?

    Parce que moi je veux supprimer les doublons dont je range le numéro de ligne dans mon tabsup. En supprimant les lignes avec l'indice contenu dans tabsup, je supprime les doublons de mon datagridview ... Je sais pas si c'est clair :S

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Sinon je viens de penser, vu que dans mon tabsup je n'ai que mes doublons si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To NbIndex - 1
                gridview_tbl.Rows.RemoveAt(tabsup(0))
    Next
    Ca devrait supprimer touts mes doublons ?

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par Thyyb Voir le message
    Sinon je viens de penser, vu que dans mon tabsup je n'ai que mes doublons si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To NbIndex - 1
                gridview_tbl.Rows.RemoveAt(tabsup(0))
    Next
    Ca devrait supprimer touts mes doublons ?
    Non ! Ca supprimera NbIndex fois la ligne correspondant à TabSup(0).
    Si tu as TabSup(0) = 5, ça supprimera NbIndex fois la 6ème ligne sachant qu'à chaque suppression, toutes tes lignes se décalent !

    Je ne sais pas comment tu contruits ton TabSup mais il y a plusieurs solutions :

    Au lieu de stocker les indices en double, tu stockes directement dans une liste les DataGridViewRow à supprimer. Pour la suppression, tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each aRow in TabSup
      gridview_tbl.Rows.Remove(aRow)
    Next
    Ou bien tu peux aussi trier ta liste des indices par ordre descendant afin de supprimer la collection en commençant par la fin.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Donc même si je fais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Array.Sort(tabsup)
    Array.Reverse(tabsup)
    For i = 0 To NbIndex - 1
           gridview_tbl.Rows.RemoveAt(tabsup(0))
    Next
    C'est pas bon c'est ça ? En fait je pose la question mais j'ai déjà essayé et ça ne fonctionne pas xD

  10. #10
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array.Sort(tabsup)
    Array.Reverse(tabsup)
    For i = 0 To NbIndex - 1
           gridview_tbl.Rows.RemoveAt(tabsup(i))
    Next
    C'est la subtilité, remet bien le i à la place du 0.
    Expert en recherche google caféinomane

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Mais si je remet le i, je ne supprime qu'une ligne sur 2 non ? Vu que mon i va s'incrémenter et au contraire mon indice va "décrémenter" .

    Sinon je viens d'entre apercevoir une lueur que je n'avais pas encore remarqué ...
    Dans mon tabsup, j'ai ceci
    20
    20
    19
    19
    18
    18
    .
    .
    10
    9
    8
    7
    J'ai aussi des doublons dans mon tabsup, donc quand je supprime la ligne indicé 20, ensuite il veut encore la supprimé mais elle n'existe plus. C'est ça mon problème je pense non

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Mais si je remet le i, je ne supprime qu'une ligne sur 2 non ? Vu que mon i va s'incrémenter et au contraire mon indice va "décrémenter" .
    Tu confonds l'indice de ton tableau et l'indice de ta collection de rows. Tu ne supprimes pas les élément de ton tableau donc ...

    J'ai aussi des doublons dans mon tabsup
    C'est un problème en effet... Il faudrait savoir comment tu construits ton tableau car je pense que la méthode n'est pas au top !

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 55
    Points : 25
    Points
    25
    Par défaut
    Dans mon tableau je rangeais l'indice des lignes de mon dgv à supprimer donc en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dgv.Rows.RemoveAt(tabsup(0))
    par exemple, je supprime la ligne dont l'indice est contenu à l'endroit 0 de mon tabsup de mon dgv non ?

    Merci à tous, mon patron vient de me dire :
    "Bon ba tu mets un ComboBox, dans le ComboBox tu mets le nom des champs et l'utilisateur fera sa recherche dans le champ qu'il choisi"
    Ca fait 2 jours que je me casse la tête à faire une recherche dans touts les champs et la plus besoin. J'ai juste à faire une petite requête sql qui est toute facile... xD

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

Discussions similaires

  1. problème sur l'indice d'un tableau avec le compilateur du C gcc
    Par aefmaaradji dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 12/11/2008, 17h27
  2. Problème de taille de tableau
    Par k-nine dans le forum C
    Réponses: 6
    Dernier message: 25/09/2005, 09h16
  3. problème de d'indice de tableau
    Par Pymm dans le forum ASP
    Réponses: 2
    Dernier message: 27/07/2005, 16h18
  4. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30
  5. problème d'affectation de tableau ...
    Par Mike888 dans le forum C
    Réponses: 23
    Dernier message: 26/02/2005, 14h52

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