Mettre un fichier CSV dans une variable tableau

Résolu
quantum59 Messages postés 7 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 11 décembre 2008 - 4 déc. 2008 à 19:27
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 déc. 2008 à 20:06
Bonjour,

j'ai cherché sur le net et je n'ai pas trouvé de réponse à mon problème.

Je cherche le moyen de mettre un fichier CSV en mémoire dans un tableau a 2 dimensions (une variable).

Le but est de pouvoir faire appel à cette fonction en appelant sa colonne et sa ligne de cette manière valeur = tableau_CSV(x,y)

merci beaucoup pour votre aide

1 réponse

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 déc. 2008 à 20:06
<hr />
'    RÉCUPÉRER LE CONTENU D'UN FICHIER SOUS FORME D'UN TABLEAU
MULTIDIMENSIONNEL D'APRÈS DES COLONNES STRUCTURÉES
'    http://www.codyx.org/snippet_recuperer-contenu-fichier-sous-forme-tableau-multidimensionnel-apres_508.aspx#1598
'    Posté par [ PCPT ] le 04/12/2007
<hr />




Function 
GetColumnsFromFile(sPath 
As String
,
Optional
sSepar
As String
=
";"

As String
()

    Dim FF As Integer, sBuffer As String, aLines() As String, aCols() As String, i As Long, j As Long, aRes() As String
    FF = FreeFile: i = 0: j = 0
    
    On Error Resume Next
    Open sPath For Input As #FF
        sBuffer = Input(LOF(FF), #FF)
    Close #FF
    If Not (Err.Number = 0) Then Exit Function
    
    aLines = Split(sBuffer, vbNewLine)
    For i = 0 To UBound(aLines)
        aCols = Split(aLines(i), sSepar)
        If i = 0 Then ReDim aRes(UBound(aLines), UBound(aCols))
        For j = 0 To UBound(aCols)
            aRes(i, j) = aCols(j)
        Next j
    Next i
    
    GetColumnsFromFile = aRes
    Erase aLines: Erase aCols: Erase aRes
End Function
'
'   EXEMPLE
Private Sub Form_Load()
    Dim aFile() As String
    Dim i%, j%
    aFile = GetColumnsFromFile("C:\aaa.txt", "[MYSEP]")
    For i = 0 To UBound(aFile)
        For j = 0 To UBound(aFile, 2)
            Debug.Print aFile(i, j)
        Next j
        Debug.Print "===================" & vbCrLf
    Next i
End Sub
3
Rejoignez-nous