Chargement d'un fichier texte

Signaler
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Donc j'ai un fichier texte contenant plusieurs centaines de lignes, chaque ligne contient 20 données séparée par un ";".
Exemple d'une ligne : 4/02/1978;6;17;30;31;35;37;15;281535;460171,2;0;0;0;0;18;5418;1701;28,51;35206;1,24

Voici le code lors de l'ouverture du ficher => form_load :

Private Sub form_load()

Private Type MesColonnes
c01 As String
c02 As String
c03 As String
c04 As String
c05 As String
c06 As String
c07 As String
c08 As String
c09 As String
c10 As String
c11 As String
c12 As String
c13 As String
c14 As String
c15 As String
c16 As String
c17 As String
c18 As String
c19 As String
c20 As String
End Type

Dim Tabligne() As MesColonnes


stFichier = (App.Path & "\Essai.txt")

Open stFichier For Input As #1

num_fiche = 1

Do While Not EOF(1)
Input #1, Tabligne(num_fiche).c01, Tabligne(num_fiche).c02, Tabligne(num_fiche).c03, Tabligne(num_fiche).c04, Tabligne(num_fiche).c05, Tabligne(num_fiche).c06, Tabligne(num_fiche).c07, Tabligne(i).c08, Tabligne(i).c09, Tabligne(num_fiche).c10, Tabligne(num_fiche).c11, Tabligne(num_fiche).c12, Tabligne(num_fiche).c13, Tabligne(num_fiche).c14, Tabligne(num_fiche).c15, Tabligne(num_fiche).c16, Tabligne(num_fiche).c17, Tabligne(num_fiche).c18, Tabligne(num_fiche).c19, Tabligne(num_fiche).c20 message d'erreu : subscript out of range
num_fiche = num_fiche + 1
Loop
Close #1

end sub

Est ce que vous pouvez m'aidez à résoudre le message d'erreur que j'ai ? (en rouge)
Est ce que cette méthode est correcte ?

Merci.

Luca62.

4 réponses

Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
t'as penser passer par un tableau, ça aiderais déjà pas

dim tableau() as objet
redim tableau(-1)
Do While Not EOF(1)
Input #1, Tabligne
redim preserve tableau(ubound(tableau + 1))
tableau(ubound(tableau)) = split(Tabligne,";")
loop
Close #1


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
Messages postés
56
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
4 août 2005

Comment ca fonctionne cette procédure car je ne l'ai ja mais employée, à la place du Input #1, Tabligne, je met met 3 lignes ?

La déclaration je laisse la même ou dim tableau() as objet et redim tableau(-1), c'est assez ?

Et comment de reclasse mes 20 données après dans les cases textes ?

Merci.

Luca62.
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
ce que je fais, je met toute mes colone dans une chaine string
ensuite je fais un split qui va retourner un tableau d'élément

puis je met le tout dans un tableau d'objet (les lignes de ta requête) ou un tableau qui contine un 2e tableau (les colonne de ta requête)

le redim -1 permet d'initiliaser ton tableau à vide au lieu de nothing, comme ça tu pourra faire redim preserve tableau(ubound(tableau + 1)). Si ton tableau est a nothing, ceci va planter

-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
y'a vraiment du foutage de gueule là !!!!
dragon, regarde ceci : http://www.vbfrance.com/forum.v2.aspx?ID=520661 , çà peut t'aider à ne pas perdre ton temps

luca62, l'avis d'autres personne, je veux bien, mais t'as même pas fait correctement ce que je t'ai dit, et tu te permets de copier la moitié du quart de ce que tu as compris en attendant la solution miracle......
nan mais j'déblokkkk !!!

*ton type mescolonnes, c'est pas en form load, mais en déclarations générales

* ton fichier texte doit contenir des VIRGULES pour être lus directement en une seule ligne et "pré-coupé" pour n'avoir ni de INSTR, ni de SPLIT à effectuer

*ton tableau doit aussi être déclarer au déc gen

*il te faut un compteur qui commence à zéro, correspondant au Redim que tu vas appliquer au tableau(n).type avant de lui attribuer ses valeurs. puis ce compteur est incrémenté.

relis la journée que j'ai passé à te répondre, la TOTALITé DES REPONSES Y SONT.

PCPT