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 :

Index Hors Limite après Split


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : mai 2022
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Index Hors Limite après Split
    Bonjour à tous,

    Je fais appel à vous car j'ai un problème que je ne parviens pas à comprendre / régler.

    Après avoir récupéré mes données avec une requête SQL et les intégrer dans un Datagridview, j'ai besoin de faire un Split sur une colonne pour récupérer seulement une partie de la valeur.
    Jusque là pas de problème.
    Seulement lorsque je veux attribuer le résultat à une variable, j'ai une erreur de type Index Hors Limite du tableau.

    Pourtant lorsque je fais un test en demandant d'écrire le résultat dans un MsgBox, ça fonctionne.

    Voici mon petit bout de code qui me bloque:

    Les données du DGV sont au format "AB001-123456"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 0 To DataGridView1.Rows.Count - 1
     
                Dim Acces = DataGridView1.Rows(i).Cells.Item("AccessionNumber").Value
                Dim temp() = Split(Acces, "-")
                Dim acn As Integer = temp(1)
            Next
    Donc si je demande Msgbox(temp(1)) Ca fonctionne

    Mais avec la ligne Dim acn As Integer = temp(1) ça bloque

    Pourriez-vous m'expliquer ce qui coince, je vous en serais très reconnaissant.

    Merci d'avance

    Jérôme

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 851
    Points : 15 278
    Points
    15 278
    Par défaut
    Salut

    split pour ton cas renvoie un tableau de string Dim acn As Integer = Cint(temp(1)) pourrait être la solution ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 433
    Points : 2 593
    Points
    2 593
    Par défaut
    Bonjour

    La boucle For jusque Count-1 doit probablement être jusque Count-2 si le DataGridView contient une ligne vide à la fin (c'est souvent le cas).

    Si c'est le problème et que tu n'as pas besoin de cette ligne vide, il faut changer à False la propriété AllowUserAddRow du DGV (vérifier le nom de cette propriété, je ne peux le faire avec mon Smartphone).
    Si tu fais ce changement alors la boucle jusque Count-1 est correcte.

    Bonne journée...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    juin 2019
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juin 2019
    Messages : 912
    Points : 1 400
    Points
    1 400
    Par défaut
    Bonjour,
    j'ajoute une fonction de conversion de type!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function StringToInteger(V As Object) As Integer
            Try
                Return CInt(V)
            Catch ex As Exception
                Return 0
            End Try
        End Function
    je scan mon DataGridView1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     For Each r As DataGridViewRow In Me.DataGridView1.Rows
                Dim acn As Integer = StringToInteger($"{r.Cells.Item("AccessionNumber").Value.ToString}-".Split("-")(1).ToString)
                MessageBox.Show(r.Cells.Item("AccessionNumber").Value)
            Next

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : mai 2022
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Merci
    06/05/2022, 07h50
    Phil Rob
    Bonjour

    La boucle For jusque Count-1 doit probablement être jusque Count-2 si le DataGridView contient une ligne vide à la fin (c'est souvent le cas).

    Si c'est le problème et que tu n'as pas besoin de cette ligne vide, il faut changer à False la propriété AllowUserAddRow du DGV (vérifier le nom de cette propriété, je ne peux le faire avec mon Smartphone).
    Si tu fais ce changement alors la boucle jusque Count-1 est correcte.


    C'était bien ça.

    Un grand Merci

    J'avais déja converti en Integer mais effectivement je ne l'avais pas pris dans le copier-coller pour lancer le sujet.

    Merci à tous

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

Discussions similaires

  1. [SSRS][2k8] Index hors limites
    Par matb33 dans le forum SSRS
    Réponses: 5
    Dernier message: 12/05/2016, 12h34
  2. Index Hors limite sur Data Grid view.
    Par Seb1492 dans le forum C#
    Réponses: 3
    Dernier message: 04/08/2011, 09h05
  3. Index hors limites avec scanline
    Par Lio590 dans le forum Langage
    Réponses: 17
    Dernier message: 02/04/2011, 17h13
  4. message d'erreur du a index hors limites
    Par kate59 dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 19/04/2008, 20h01
  5. Index local invalide après split partition
    Par pat29 dans le forum Oracle
    Réponses: 1
    Dernier message: 17/01/2008, 09h04

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