Déclaration Tableau [Résolu]

Messages postés
65
Date d'inscription
mardi 28 septembre 2004
Dernière intervention
24 octobre 2007
- 19 mai 2006 à 04:41 - Dernière réponse :
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 19 mai 2006 à 14:52
Salut, je tente actuellement de créé un petit OCX qui va aller lire des données dans un fichier Text et me les séparés dans un Tableau. Cependant, j'obtien un message d'erreur "Subscript out of range" et je sais pas comment sa.
Voici l'endoit ou l'erreur ce fait :

Do While Not EOF(bytFile)
        Row = Row + 1
        Line Input #bytFile, strTempData        If Col_Init 0 Then Col_Init Round(Len(strTempData) / Col_width, 0)
->    ReDim Preserve strData(Row, Col_Init)
        Dim i As Integer
        For i = 1 To Round(Len(strTempData) / Col_width, 0)
        strData(Row, i) = Mid(strTempData, i * Col_width, Col_width)
        Next i
        DoEvents
Loop

l'erreur se produit quand Row = 2, et je ne comprends pas pourquoi :'( si quelqu'un pouvais m'éclairé

Dii-Player
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
vendredi 26 septembre 2003
Dernière intervention
15 juin 2006
- 19 mai 2006 à 11:36
3
Merci
ReDim Preserve strData(Row, Col_Init)

C'est là ton erreur, tu essayes de redimensionner un tableau multidimensionnel, en faisant varier la 1ère dimension. En VB dans un tableau multidimensionnel, seul la dernière dimension peut être redimensionnée par un Redim Preserve.

En effet, si tu regardes dans l'aide du mot-clef "ReDim" tu trouveras cette phrase :

"Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que
la dernière dimension du tableau."

D'après moi tu pourrais résoudre rapidement ton problème en inversant les dimensions du tableau. Mais j'aime pas trop les tableaux multidimensionnels en VB, personnellement je te conseille plutôt d'utiliser des tableaux de types (tu crées un type personnalisé et tu fais un tableau monodimensionnel de ce type)

Merci cs_deuspi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_deuspi
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 19 mai 2006 à 07:59
0
Merci
comment as tu déclaré ton tableau ?

tu peux également faire :

If Col_Init 0 Then Col_Init Len(strTempData) \ Col_width


et pour ta boucle :


For i = 1 To Col_Init


à noter que tu ne récupère pas dans ton tableau la première colonne de données

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 19 mai 2006 à 11:54
0
Merci
tu peux par exemple dimensionner ton tableau (en ligne) dès le départ, en comptant préalablement les lignes de ton fichier.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
65
Date d'inscription
mardi 28 septembre 2004
Dernière intervention
24 octobre 2007
- 19 mai 2006 à 13:23
0
Merci
Il y aurait-il une manière de compté le nombre de ligne ou dois-je procédé avec une boucle?

Dii-Player
Commenter la réponse de diiplayer
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 19 mai 2006 à 14:52
0
Merci
une autre solution peut etre de lire (s'il n'est pas trop gros) tout ton fichier
et de jouer avec Split pour séparer tes lignes.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.