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

Messages postés
7
Date d'inscription
mercredi 26 novembre 2008
Dernière intervention
11 décembre 2008
- - Dernière réponse : PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
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 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
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 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.