Voici un parseur CSV simple, en esperant qu'il puisse servir à quelqu'un :
Utilisation :
[syntax="LotusScript"]'Déclaration
Dim clFileCsv As readCSV
'Création de la classe, on passe le chemin vers le fichier en paramètre
Set clFileCsv = New readCSV([Chemin du fichier] As String)
''Les fonctions
'Récupérer le nombre de ligne
Dim lineCount As Integer
lineCount = clFileCSV.lineCount
'Récupérer le nombre de colonne
Dim colCount As Integer
lineCount = clFileCSV.colCount
'Récupérer les valeures
Dim valeurReturn As String
valeurReturn = clFileCSV.getValue([Numéro de ligne] As Integer, [Numéro de colonne] As Integer)
[/syntax]
La classe :
[syntax="LotusScript"]Public Class readCSV
Private fileCsv As Integer
Private outReadCsv() As String
Private countCol As Integer
Private countLine As Integer
Public Sub new(fileName As String)
Dim bufferTemp As String
Dim countLineTemp As Integer
fileCsv% = Freefile()
Open fileName$ For Input As fileCsv%
Call getCountLine
Seek fileCsv%, 1
Do Until Eof(fileCsv%)
Line Input #fileCsv%, bufferTemp
If(countLineTemp = 0) Then
countCol = getCountCol(bufferTemp)
End If
Redim Preserve outReadCsv(countLine - 1, countCol - 1)
Call traiteData(bufferTemp, countLineTemp)
countLineTemp = countLineTemp + 1
Loop
Close fileCsv%
End Sub
Public Property Get lineCount As Integer
lineCount = countLine
End Property
Public Property Get colCount As Integer
colCount = countCol
End Property
Public Function getValue(numLine As Integer, numCol As Integer) As String
getValue = outReadCsv(numLine, numCol)
End Function
Private Function getCountCol(lineEx As String) As Integer
Dim buff As Variant
Dim countTmp As Integer
countTmp = 0
buff = Split(lineEx, ";")
Forall b In buff
countTmp = countTmp +1
End Forall
getCountCol = countTmp
End Function
Private Sub getCountLine
Dim buffTemp As String
Do Until Eof(fileCsv%)
Line Input #fileCsv%, buffTemp
countLine = countLine + 1
Loop
End Sub
Private Sub traiteData(buff As String, lineRead As Integer)
Dim xBoucle As Integer
Dim buffTemp As Variant
buffTemp = Split(buff, ";")
For xBoucle = 0 To countCol - 1
outReadCsv(lineRead, xboucle) = buffTemp(xboucle)
Next
End Sub
End Class[/syntax]
N'hésitez pas à me dire ce qui ne va pas (ouai, et puis si ça va c'est sympa de le dire aussi hein
