VB : l'index se trouve en dehors du tableau.
Loulipop
-
mariethe -
mariethe -
Bonjour,
J'ai besoin d'avis extérieur parce que je ne trouve pas mon erreur. Je veux lire un fichier et le mettre dans un datagridview.
Je veux lire certaines colonnes (mais je n'ai pas encore compris comment faire), mais déjà, j'ai une erreur : "l'index se trouve en dehors du tableau"
Donc j'ai ça
et un form1
Mon erreur apparait lors du Catch ex As Exception du module 1, avec le message "L'index se trouve en dehors des limites du tableau"
Je ne trouve pas mon erreur et je sèche beaucoup!
Si vous pouvez m'aider, me mettre sur la piste, ça serait géniale car ça me bloque vraiment ! Merci
J'ai besoin d'avis extérieur parce que je ne trouve pas mon erreur. Je veux lire un fichier et le mettre dans un datagridview.
Je veux lire certaines colonnes (mais je n'ai pas encore compris comment faire), mais déjà, j'ai une erreur : "l'index se trouve en dehors du tableau"
Donc j'ai ça
Module Module1
Function ListeFichierATraiter() As String()
' Déclarations et initialisations de varaibles locales
'
Dim DossierCourant As String = "Data\Projet"
Dim ListeFichiers As String() = Directory.GetFiles(DossierCourant & "\GD")
Dim OKDebug As Boolean = True
' on vérifie si on est dans le bon fichier
Debug.WriteLine("Dossier Courant = " & DossierCourant)
If OKDebug Then
For Each f As String In ListeFichiers
Debug.WriteLine(f)
Next f
End If
Return ListeFichiers
End Function
Sub Traitement(ByVal NomFichierAtraiter As String)
Dim Sr As StreamReader = New StreamReader(NomFichierAtraiter)
Dim MonDs As DataSet
Dim dt As DataTable = New DataTable("MaTable")
Dim Colonne As DataColumn
Dim Ligne As DataRow
Dim LigneLue As String = Nothing
Dim LigneSplittee() As String = Nothing
LigneLue = Sr.ReadLine()
LigneSplittee = LigneLue.Split(CType(vbTab, Char))
For Each LS As String In LigneSplittee
Debug.WriteLine("LS = " & LS)
Next LS
Try
Colonne = New DataColumn()
Colonne.DataType = System.Type.GetType("System.String")
Colonne.ColumnName = LigneSplittee(0).Trim
Colonne.ReadOnly = True
Colonne.Unique = False
'
' Ajout de la colonne à la collection Columns de dt
'
dt.Columns.Add(Colonne)
'
' Construction de la deuxième table
'
Colonne = New DataColumn()
Colonne.DataType = System.Type.GetType("System.String")
Colonne.ColumnName = LigneSplittee(1).Trim
Colonne.ReadOnly = True
Colonne.Unique = False
'
' Ajout de la colonne à la collection Columns de dt
'
dt.Columns.Add(Colonne)
'
' Création de notre dataSet
'
MonDs = New DataSet
'
' Ajout de la table à la collectio Tables de MonDs
'
MonDs.Tables.Add(dt)
'
' Lecture et traitement des données contenues dans le fichier
' en cours de traitement
'
Do While Not Sr.EndOfStream
'
LigneLue = Sr.ReadLine()
'
' Si la ligne est vide, on en lit une nouvelle
'
If LigneLue = "" Then
Continue Do
End If
LigneSplittee = LigneLue.Split(CType(vbTab, Char))
'
' Boucle permettant de vérifier si l'attendu est l'obtenu
'
For Each LS As String In LigneSplittee
Debug.WriteLine("LS = " & LS)
Next LS
'
' Création et remplissage d'une nouvelle ligne.
'
Ligne = dt.NewRow
Ligne(0) = LigneSplittee(0)
Ligne(1) = LigneSplittee(1)
'
' Ajout de la ligne à la collection
'
dt.Rows.Add(Ligne)
'
Loop
Sr.Close()
'
' Paramétrage du DataGridView1
'
With Form1.DataGridView1
.RowHeadersVisible = True
.ColumnHeadersVisible = True
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
.DataSource = MonDs.Tables(0)
Dim rowNumber As Integer = 1
'
For Each row As DataGridViewRow In .Rows()
If row.IsNewRow Then Continue For
'
' La valeur doit être de type String apparement
'
row.HeaderCell.Value = rowNumber.ToString
rowNumber += 1
Next row
'
.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
'
End With
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub
End Module
et un form1
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim MaListeFichier() As String = Module1.ListeFichierATraiter
Module1.Traitement(MaListeFichier(0))
'Me.DataGridView1.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
'Me.DataGridView1.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
'InitialisationDataGridView()
End Sub
Sub InitialisationDataGridView()
With Me.DataGridView1
'Définition du nombre de colonne
.ColumnCount = 20
' Définition du nombre de ligne
.RowCount = 101
'
.RowHeadersVisible = True
.ColumnHeadersVisible = True
'.RowHeadersDefaultCellStyle =
.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
For i As Integer = 0 To .ColumnCount - 1
.Columns(i).Name = CStr(i + 1)
Next i
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize
Dim rowNumber As Integer = 1
For Each row As DataGridViewRow In .Rows()
If row.IsNewRow Then Continue For
row.HeaderCell.Value = rowNumber.ToString
rowNumber += 1
Next row
.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
For i As Integer = 0 To 99
For j As Integer = 0 To 19
.Rows(i).Cells(j).Value = CStr((i + 1) * (j + 1))
Next j
Next i
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
End With
End Sub
Mon erreur apparait lors du Catch ex As Exception du module 1, avec le message "L'index se trouve en dehors des limites du tableau"
Je ne trouve pas mon erreur et je sèche beaucoup!
Si vous pouvez m'aider, me mettre sur la piste, ça serait géniale car ça me bloque vraiment ! Merci
A voir également:
- L'index se trouve en dehors des limites du tableau.
- Vb - Télécharger - Langages
- Vb audio cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Vb express - Télécharger - Langages
8 réponses
Bonjour,
Peux-tu nous indiquer sur quelle ligne se produit l'erreur.
Merci également de mettre en forme le code en utilisant les balises (4ème icônes en haut du pavé [<>]), c'est illisible comme ça.
Quant au bug du logiciel, j'y crois pas trop.
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Peux-tu nous indiquer sur quelle ligne se produit l'erreur.
Merci également de mettre en forme le code en utilisant les balises (4ème icônes en haut du pavé [<>]), c'est illisible comme ça.
Quant au bug du logiciel, j'y crois pas trop.
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
moi non plus j'ai bien cherché mais je ne trouve pas d'erreur je pense que c'est le logiciel qui bug
bonjour,
je suis sûre que ton debuggeur était plus généreux que toi.
puisque tu n'indique pas la ligne d'erreur je peux te répondre que t'as quelque part un tableau dont l'index depasse les limites=la longueur du tableau.
je suis sûre que ton debuggeur était plus généreux que toi.
puisque tu n'indique pas la ligne d'erreur je peux te répondre que t'as quelque part un tableau dont l'index depasse les limites=la longueur du tableau.
J'ai remis l'annonce en forme avec le lieu de l'erreur et le message que j'ai.
J'ai essayer de modifier certains paramètres mais je ne trouve pas :/
J'ai essayer de modifier certains paramètres mais je ne trouve pas :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
ton code, vrai manque beaucoup d'organisation mais il est corrêct, le problème est peut être dans ce que t'as prévu, verrifie bien que les lignes lus sont pas vides avant de les utilisater justement là:
et puisque tu utilise traux de tableaux comme c'est le cas ici:
celà signifie que tu as au moins un separateur tab dans ton fichier sinon l'index sera out.
derniere chose quand en utilise les fichier il est trés recommendé de tujours verrifier leurs état est ce qu'ils sont en cours d'utilisation ou pas. mais dans ce cas t'auras un autre type d'exception....
I Have a dream that One day every One makes his Operating System and tell Microsoft to get the hell
God bless Martin Luther King.
ton code, vrai manque beaucoup d'organisation mais il est corrêct, le problème est peut être dans ce que t'as prévu, verrifie bien que les lignes lus sont pas vides avant de les utilisater justement là:
LigneLue = Sr.ReadLine() 'premiere instruction de lecture dans la methode traitement()
et puisque tu utilise traux de tableaux comme c'est le cas ici:
Ligne(0) = LigneSplittee(0) Ligne(1) = LigneSplittee(1) 'toujours dans traitement()
celà signifie que tu as au moins un separateur tab dans ton fichier sinon l'index sera out.
derniere chose quand en utilise les fichier il est trés recommendé de tujours verrifier leurs état est ce qu'ils sont en cours d'utilisation ou pas. mais dans ce cas t'auras un autre type d'exception....
I Have a dream that One day every One makes his Operating System and tell Microsoft to get the hell
God bless Martin Luther King.
Est ce que je peux pas faire plus simple comme code ?
C'est la 1ere fois que j'utilise les datagridview et j'avoue ne pas m'en sortir :/
Ce que je veux obtenir à terme, c'est une form, où seront lues mes données générés dans Excel, en choisissant les colonnes à lire.
Pouvez vous me donner quelques idées à explorer ?
J'essaye de m'aider de l'aide en ligne mais je bloque complètement...
C'est la 1ere fois que j'utilise les datagridview et j'avoue ne pas m'en sortir :/
Ce que je veux obtenir à terme, c'est une form, où seront lues mes données générés dans Excel, en choisissant les colonnes à lire.
Pouvez vous me donner quelques idées à explorer ?
J'essaye de m'aider de l'aide en ligne mais je bloque complètement...
entre excel et tes projets tu peux faire importation exportation des données facilement et te passer de lecture des streams.
je te conseille de cherecher les methodes des classes suivantes:
qui te permetront de gérer tes fichiers excel
jete un oeil par là https://drq.developpez.com/vb/tutoriels/Excel/ ca va t'aider
I Have a dream that One day every One makes his Operating System and tell Microsoft to get the hell
God bless Martin Luther King.
je te conseille de cherecher les methodes des classes suivantes:
Excel.Application 'Application Excel Excel.Workbook 'Classeur Excel Excel.Worksheet 'Feuille Excel
qui te permetront de gérer tes fichiers excel
jete un oeil par là https://drq.developpez.com/vb/tutoriels/Excel/ ca va t'aider
I Have a dream that One day every One makes his Operating System and tell Microsoft to get the hell
God bless Martin Luther King.
comment supprimer ce message d'erreur qui apparaît en permanence avec WINDOWS 7 : "une exception non gérée s'est produite dans un composant de votre application. Si vous cliquez sur continuer votre application va ignorer cette erreur et essayer de continuer.
L'index se trouve en dehors des limites du tableau."
merci beaucoup à celui ou celle qui me renseignera.
L'index se trouve en dehors des limites du tableau."
merci beaucoup à celui ou celle qui me renseignera.