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 :

l'index se trouve en dehors des limites du tableau


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Par défaut l'index se trouve en dehors des limites du tableau
    Bonjour à tous,
    J'ai bien cherché sur le forum et je n'ai pas trouvé de solutions.
    Voilà, j'ai un projet à faire (sur visual basic express 2010), sur lequel l'utilisateur peut ajouter/supprimer/modifier des lignes et des stations de métro.
    Le problème se pose quand je programme le click_ajouterstation ou le click_supprimerstation, ça m'écrit "l'index se trouve en dehors des limites du tableau", et ça renvoie le problème dans les procédures que le prof avait déjà entré pour nous "faciliter" le travail

    le prof:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    'Quand on sélectionne une station de la listBox contenant les noms de stations, on affiche les informations de la station dans les textBox du groupe informations
        Private Sub lst_stations_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst_stations.SelectedIndexChanged
            'Remplir les informations de la station sélectionnée
            Dim indiceLigneSelectionnee As Integer = lst_lignes.SelectedIndex
            Dim indiceStationSelectionnee As Integer = lst_stations.SelectedIndex
            Dim stationSelectionnee As Station = reseau(indiceLigneSelectionnee).stations(indiceStationSelectionnee) "l'index se trouve en dehors des limites du tableau"
     
            txt_nomStation.Text = stationSelectionnee.nom
            txt_xStation.Text = stationSelectionnee.position.x
            txt_yStation.Text = stationSelectionnee.position.x
            txt_nbCorrespondancesStation.Text = stationSelectionnee.nbCorrespondances
     
            Dim i As Integer
            'Effacer les textbox de correspondance
            For i = 0 To 4
                gb_correspondancesStation.Controls(i).Text = ""
            Next
            'Remplir les textbox des correspondances
            For i = 0 To stationSelectionnee.nbCorrespondances - 1
                gb_correspondancesStation.Controls(i).Text = stationSelectionnee.correspondances(i)
            Next
     
        End Sub
    Et voilà mes bouton ajouter/supprimer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub btn_supprimerStation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_supprimerStation.Click
            Dim p2 As Integer 'station à supprimer
            p2 = lst_stations.SelectedIndex
            Dim j2 As Integer ' j2 correspond au numéro de la ligne
            j2 = lst_lignes.SelectedIndex
            supprimerstation(reseau(j2), reseau(j2).nbStations, p2)
            'Afficher les lignes dans les listBox
            afficherLignes(reseau, nbLignes, lst_lignes)
            afficherLignes(reseau, nbLignes, lst_ligneDepart)
            afficherLignes(reseau, nbLignes, lst_ligneArrivee)
            'redessinage du réseau
            Me.Refresh()
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
        Private Sub btn_ajouterStation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ajouterStation.Click
            Dim s As Station
            'lecture des données rentrées par l'utilisateur pour la nouvelle station
            s.nom = txt_nomStation.Text
            s.nbCorrespondances = Val(txt_nbCorrespondancesStation.Text)
            s.position.x = Val(txt_xStation.Text)
            s.position.y = Val(txt_yStation.Text)
            'Mise en place d'un si pour les correspondances afin de remplir le tableau correctement
            If s.nbCorrespondances <> 0 Then
                ReDim s.correspondances(10)
                If s.nbCorrespondances = 1 Then
                    s.correspondances(0) = Val(txt_correspondance0.Text)
                ElseIf s.nbCorrespondances = 2 Then
                    s.correspondances(0) = Val(txt_correspondance0.Text)
                    s.correspondances(1) = Val(txt_correspondance1.Text)
                ElseIf s.nbCorrespondances = 3 Then
                    s.correspondances(0) = Val(txt_correspondance0.Text)
                    s.correspondances(1) = Val(txt_correspondance1.Text)
                    s.correspondances(2) = Val(txt_correspondance2.Text)
                ElseIf s.nbCorrespondances = 4 Then
                    s.correspondances(0) = Val(txt_correspondance0.Text)
                    s.correspondances(1) = Val(txt_correspondance1.Text)
                    s.correspondances(2) = Val(txt_correspondance2.Text)
                    s.correspondances(3) = Val(txt_correspondance3.Text)
                ElseIf s.nbCorrespondances = 5 Then
                    s.correspondances(0) = Val(txt_correspondance0.Text)
                    s.correspondances(1) = Val(txt_correspondance1.Text)
                    s.correspondances(2) = Val(txt_correspondance2.Text)
                    s.correspondances(3) = Val(txt_correspondance3.Text)
                    s.correspondances(4) = Val(txt_correspondance4.Text)
                End If
            End If
     
            'ajouter station
            Dim j2 As Integer ' j2 correspond au numéro de la ligne
            j2 = lst_lignes.SelectedIndex
            ReDim s.correspondances(10)
            Dim msg As String
            Dim p2 As Integer ' p2 correspond à la place ou on veut introduire la station
            msg = ""
            'mise en place de condition en fonction de la place de la station : première station, dernière station, station intermédiaire
     
            insérerstation(reseau(j2), reseau(j2).nbStations, s, p2)
     
            'Afficher les lignes dans les listBox
            afficherLignes(reseau, nbLignes, lst_lignes)
            afficherLignes(reseau, nbLignes, lst_ligneDepart)
            afficherLignes(reseau, nbLignes, lst_ligneArrivee)
            'redessinage du réseau
            Me.Refresh()
        End Sub
    Merci beaucoup, je précise juste que je suis débutante, et que donc, je ne connait/comprend pas tous les termes techniques

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    À vrai dire, je n'ai pas (encore) tout lu, donc pas vraiment tout compris, mais je peux quand même te donner une piste.

    Le plus important de tout est de ne jamais utiliser val() si le séparateur décimal est la virgule. Et cela, c'est vrai pour au moins tous les BASIC de Microsoft, incluant VBA. Au lieu de val(), utilise plutôt Cint() pour convertir en Integer (entier), Csng() (virgule flottante en précision simple) ou CDbl() (virgule flottante en précision étendue).

    Et puis, pour vérifier la compétence du professeur, tu peux lui servir un DirectCast , un TryCast() ou un CType().

    Et puis, je te suggères de ne pas hésiter à mettre le temps nécessaire à appliquer ce que je dis dans ma signature, même si cela semble ringard ou difficile. Veut, veut pas, c'est une des meilleures voies vers l'autonomie.

    Et puis, il y a ce document inestimable que tu peux télécharger gratuitement :

    http://plasserre.developpez.com/cours/vb-net/

    Et cette page, toujours utile:

    http://dotnet.developpez.com/vbnet/#cours

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour

    J'ai l'impression que l'évenement lst_stations_SelectedIndexChanged
    est "déclenché" avant que tu selectionne une station
    ce qui donne ensuite
    Dim indiceLigneSelectionnee As Integer = lst_lignes.SelectedIndex
    indiceLigneSelectionnee = -1 puisqu'aucune station à été selectionné

    pour verifier mets un point d'arret touche F9
    pour cela
    place le curseur à la ligne et appui sur F9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub lst_stations_SelectedIndexChanged
    Lance ton prog
    est que la sub lst_stations_SelectedIndexChanged est executé avant que tu
    selectionne un item ?

    aussi que signifie cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim indiceLigneSelectionnee As Integer = lst_lignes.SelectedIndex
    As tu un autre listbox où tu choisis la ligne ?

Discussions similaires

  1. [Débutant] L'index se trouve en dehors des limites du tableau
    Par zitoune31 dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/10/2012, 13h45
  2. Réponses: 2
    Dernier message: 22/05/2012, 11h01
  3. L'index se trouve en dehors des limites du tableau.
    Par kirby33380 dans le forum C#
    Réponses: 3
    Dernier message: 01/04/2010, 11h45
  4. Erreur : "L'index se trouve en dehors des limites du tableau"
    Par dotnetnuke dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2009, 17h36
  5. L'index se trouve en dehors des limites du tableau
    Par LaDeveloppeuse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/10/2007, 21h11

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