Out of range

Signaler
Messages postés
9
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
1 novembre 2006
-
Messages postés
9
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
1 novembre 2006
-
Bonjour à tous

je bute sur le PB suivant et comme je suis a la bourre j'ai pris la version
brute mais pas mieux ...

j'essaye de lire un fichier qui peut avoir un nombre lignes quelqonques cidessous
"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,
"0561342011121","24/10/2006","19:00:39","01361302111714","24/10/2006","23:25:47",4,25,8,1
"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,

"0561342011121","24/10/2006","19:00:39","01361302111714","24/10/2006","23:25:47",4,25,8,1

"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,

Seules les 4 dernieres valeurs entre  virgules m'interresse  pour cela

Dim tabtrait(100) As String
employ3 = "c:\point\toto.txt"

Dim dureerepas0() As String
Dim dureerepas1() As String
Dim dureerepas2() As String
Dim dureerepas3() As String
Dim dureerepas4() As String

Dim tabresulat(20, 20) As Integer

'je lie le fichier employ3 et mets ligne a ligne dasn "tabtrait"

Open employ3 For Input As #5
i = -1
While Not EOF(5)
  i = i + 1
  Line Input #5, tabtrait(i)
  Wend
Close #5
'je split chaque ligne et affecte a un tableau "dureerepasX" (j'ai essaye d'incrementer l'indice de "dureerepas" mais cela bugé un max donc j'ai declarer x variables tableau , la honte je sais, mais fallait que ça avance, enfin vous connaissez le PB, comme il reste un peu de T je reviens sur mes solutions pas belles)
        dureerepas0 = Split(tabtrait(0), ",")
        dureerepas1 = Split(tabtrait(1), ",")
        dureerepas2 = Split(tabtrait(2), ",")
         dureerepas3 = Split(tabtrait(3), ",")
         dureerepas4 = Split(tabtrait(4), ",")

de chaque "dureerepasX" contenant une ligne splité j'en extrait les 4 derniers carateres
et les transforme en numerique(j'ai des calculs a faire dessus) et les affecte dasn un tableau a deux dimensions

Dans ces conditions lorsque je lance le prog j'ai un message OUT of RANGE
sur la ligne ci dessous. Si mon fichier contient le nombre de ligne attendu(5 dasn l'exemple) pas de PB ça marche...
       tabresulat(0, 0) = Val(dureerepas0(6))
      
       tabresulat(0, 1) = Val(dureerepas0(7))
       tabresulat(0, 2) = Val(dureerepas0(8))
       tabresulat(0, 3) = Val(dureerepas0(9))
       tabresulat(1, 0) = Val(dureerepas1(6))
       tabresulat(1, 1) = Val(dureerepas1(7))
       tabresulat(1, 2) = Val(dureerepas1(8))
       tabresulat(1, 3) = Val(dureerepas1(9))
       tabresulat(2, 0) = Val(dureerepas2(6))
       tabresulat(2, 1) = Val(dureerepas2(7))
       tabresulat(2, 2) = Val(dureerepas2(8))
       tabresulat(2, 3) = Val(dureerepas2(9))
       tabresulat(3, 0) = Val(dureerepas3(6))
       tabresulat(3, 1) = Val(dureerepas3(7))
       tabresulat(3, 2) = Val(dureerepas3(8))
       tabresulat(3, 3) = Val(dureerepas3(9))
       tabresulat(4, 0) = Val(dureerepas4(6))
       tabresulat(4, 1) = Val(dureerepas4(7))
       tabresulat(4, 2) = Val(dureerepas4(8))
       tabresulat(4, 3) = Val(dureerepas4(9))

Voili si il vous manque quelque chose dite moi !!
merci d'avance[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]

4 réponses

Messages postés
262
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
19 décembre 2010
9
Bonjour,

Essaye qqch du genre :

Dim tabtrait(100) As String
employ3 = "c:\point\toto.txt"


Dim tabresulat(100, 3) As Integer


Open employ3 For Input As #5
i = -1
While Not EOF(5)
  i = i + 1
  Line Input #5, tabtrait(i)
  For j = 0 To 3
     tabresulat(i, j) = Val(Split(tabtrait(i), ",")(j + 6))
  Next j
  Wend
Close #5


'Vérification du résultat
For j = 0 To i
   For k = 0 To 3
      MsgBox tabresulat(j, k)
   Next k
Next j

wape
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous....

Petite question:
j'essaie de lire un fichier qui peut avoir un nombre de lignes quelconques ci-dessous:
"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,
"0561342011121","24/10/2006","19:00:39","01361302111714","24/10/2006","23:25:47",4,25,8,1
"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,
"0561342011121","24/10/2006","19:00:39","01361302111714","24/10/2006","23:25:47",4,25,8,1
"0561342011121","24/10/2006","11:50:14","0561342011121","24/10/2006","14:05:28",2,15,14,

la première ligne se termine par une ","
la ligne suivante ne se termine pas pas une ","
la ligne suivante se termine par une ","
la ligne suivante ne se termine pas pas une ","
...

Est-ce réellement le cas ???

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Re,
Avec le code ci-dessous, j'obtiens:
ligne1   "14:05:28",2,15,14
ligne2   4,25,8,1
ligne3   "14:05:28",2,15,14 
ligne4   4,25,8,1

Option Explicit
Dim Fso, Path, Fic1
Dim ObjTextStream, strtmp, i, j, imax, ligne
Const ForReading = 1



Path   = "d:"
Fic1  = "test1.txt"



imax = 0
j = 0



Set fso = CreateObject("Scripting.FileSystemObject")
Set ObjTextStream = Fso.OpenTextFile(Path & Fic1, ForReading)
Do While Not ObjTextStream.AtEndOfStream
   j = j + 1
  
   strtmp = split(ObjTextStream.ReadLine, ",")



   For i = 0 to Ubound(strtmp)
       imax = imax + 1
       ReDim Preserve Tableau(1, imax)
       Tableau(1, imax) = strtmp(i)
   Next



   If Tableau(1, imax) = "" Then
      MsgBox Tableau(1, imax-4) & "," & Tableau(1, imax-3) & "," &_
             Tableau(1, imax-2) & "," & Tableau(1, imax-1) ,,"contenu du tableau de la ligne " & j
   Else
      MsgBox Tableau(1, imax-3) & "," & Tableau(1, imax-2) & "," &_
             Tableau(1, imax-1) & "," & Tableau(1, imax),,"contenu du tableau de la ligne " & j  
   End If
  
Loop
MsgBox "Nbre de lignes lues: " & j
ObjTextStream.Close
Set Fso = Nothing
Set ObjTextStream = Nothing



jean-marc
Messages postés
9
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
1 novembre 2006

Bonjour a tous

Et déjà merci à JMO et WAPE pour vos réponses...

Oui, oui JMO mon exemple ci-dessus reflete bien la realité (d'ailleurs j'avais pas vu le truc.......)

Cela étant dit je vais tester les deux solutions ce soir ..je vous tiens au courant ...

Merci encore à vous deux ..@+

Phil..