Mettre un fichier CSV dans une variable tableau [Résolu]

Messages postés
7
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
- - Dernière réponse : PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
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
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
25
3
Merci
<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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT