yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007
-
20 juil. 2007 à 11:52
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
17 août 2007 à 17:53
Bonjour,
Je suis en train de faire un programme qui doit lire dans un fichier texte composé à partir d'une certaine ligne de données sous la forme:
B=1.556 A=3.222 P=2.333
B=2.333 A=2.333 P=2.333
etc
J'arrive à récupérer les lignes de mon fichier. Ensuite j'arrive pour une ligne myLines(i) à la découper en plusieurs parties avec Split( ) et à récupérer les valeurs numériques des string obtenus avec Val( ).
Par contre je ne comprend pas trop comment faire le faire plusieurs fois et ainsi créer 3 tableau de double B, A et P...
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 20 juil. 2007 à 11:59
Salut,
Regarde ce que fait ceci pour te donner l'idee.
J'ai pas fait de fonction ou de boucle mais l'idée est la
Option Explicit
Private Type Donnees
A As Single
B As Single
P As Single
End Type
Dim TabDonnees() As Donnees
Private Sub Form_Load()
Dim ligne As String
Dim tmpType As Donnees
ligne = "B=1.556 A=3.222 P=2.333"
ReDim TabDonnees(0)
With tmpType
.B = Split(Split(ligne, " ")(0), "=")(1)
.A = Split(Split(ligne, " ")(1), "=")(1)
.P = Split(Split(ligne, " ")(2), "=")(1)
End With
Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean, ParamArray aArray()) As String()
' sStr -> chaîne à parser
' bKeepSepar -> garder ou non les caractères de
référence
' aArray -> tableau des
références de taille variables
Dim sCol As New Collection
Dim sChar As String, sLeft As String
Dim bFound As Boolean
Dim aRes() As String
Dim i As Integer, j As Integer, NbCarac As
Integer
i = 0
While LenB(sStr) > 0
i = i + 1
bFound = False
For j = LBound(aArray) To UBound(aArray)
NbCarac = Len(aArray(j))
sChar = Mid$(sStr, i, NbCarac)
If sChar = CStr(aArray(j)) Then bFound = True: Exit
For
Next j
If bFound Then
sLeft = Left$(sStr, i - 1)
If LenB(sLeft) > 0 Then sCol.Add sLeft
If bKeepSepar Then sCol.Add sChar
sStr = Right$(sStr, Len(sStr) - (NbCarac + (i - 1)))
i = 0
ElseIf sChar = vbNullString Then
sCol.Add sStr
sStr = vbNullString
End If
Wend
ReDim aRes(sCol.Count - 1)
For i = 1 To sCol.Count
aRes(i - 1) = sCol.Item(i)
Next i
MultiSplit = aRes
Set sCol = Nothing
Erase aRes
End Function
' EXEMPLE D'UTILISATION
Private Sub Form_Load()
Dim a$(), i%
a = MultiSplit("B=1.556 A=3.222
P=2.333", False, "B=", "
A=", " P=")
For i = 0 To UBound(a)
Debug.Print "_" & a(i) & "_"
Next i
Unload Me
End Sub
omarjock
Messages postés14Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention 7 avril 2008 17 août 2007 à 08:58
c'est bien ton code mortalino,
je fais la meme chose mais si dans le cas ou le fichier etait structuré en ligne comment ignorer le caractere de saut de ligne
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?