transferer le contenu d'un fichier csv dans une variables tableau
7 réponses
rayan-cooper
Bonjour,
J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel.
Merci d'avance de votre aide
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
rayan-cooper wrote:
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
Hello,
Tu as normalement tout ce qu'il te faut dans la FAQ.
Tu peux lire le fichier avec ceci: http://faq.vb.free.fr/index.php?question5
Mais tu peux aussi faire une simple lecture ligne à ligne (voir dernier lien)
Puis découper tes lignes avec Split(), comme expliqué ici: http://faq.vb.free.fr/index.php?question8
Pour la partie tableau, tu peux t'inspirer de ceci pour faire de l'allocation dynamique avec Redim : http://faq.vb.free.fr/index.php?question3
Tu as un exemple quasi complet ici (exemple 6): http://faq.vb.free.fr/index.php?question4
Bref, rien de compliqué à priori.
La FAQ contient encore pas mal d'exemples, tu peux consulter la section fichier et la section chaines de caractères: http://faq.vb.free.fr/index.php?rubrique
Bonjour,
J'ai une application VB6 qui travaille avec des fichiers csv et
j'aimerai pouvoir transferer leur contenu dans une variable tableau
aux meme dimensions mais sans utiliser exel.
Merci d'avance de votre aide
Hello,
Tu as normalement tout ce qu'il te faut dans la FAQ.
Tu peux lire le fichier avec ceci:
http://faq.vb.free.fr/index.php?question5
Mais tu peux aussi faire une simple lecture ligne à ligne
(voir dernier lien)
Puis découper tes lignes avec Split(), comme expliqué ici:
http://faq.vb.free.fr/index.php?question8
Pour la partie tableau, tu peux t'inspirer de ceci pour faire
de l'allocation dynamique avec Redim :
http://faq.vb.free.fr/index.php?question3
Tu as un exemple quasi complet ici (exemple 6):
http://faq.vb.free.fr/index.php?question4
Bref, rien de compliqué à priori.
La FAQ contient encore pas mal d'exemples, tu peux consulter
la section fichier et la section chaines de caractères:
http://faq.vb.free.fr/index.php?rubrique
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
Hello,
Tu as normalement tout ce qu'il te faut dans la FAQ.
Tu peux lire le fichier avec ceci: http://faq.vb.free.fr/index.php?question5
Mais tu peux aussi faire une simple lecture ligne à ligne (voir dernier lien)
Puis découper tes lignes avec Split(), comme expliqué ici: http://faq.vb.free.fr/index.php?question8
Pour la partie tableau, tu peux t'inspirer de ceci pour faire de l'allocation dynamique avec Redim : http://faq.vb.free.fr/index.php?question3
Tu as un exemple quasi complet ici (exemple 6): http://faq.vb.free.fr/index.php?question4
Bref, rien de compliqué à priori.
La FAQ contient encore pas mal d'exemples, tu peux consulter la section fichier et la section chaines de caractères: http://faq.vb.free.fr/index.php?rubrique
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1 S = Input(LOF(1), #1) Close
Bonjour,
J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai
pouvoir transferer leur contenu dans une variable tableau aux meme dimensions
mais sans utiliser exel.
Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1
S = Input(LOF(1), #1)
Close
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1 S = Input(LOF(1), #1) Close
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1 S = Input(LOF(1), #1) Close
dim S as string, T1() as string,T2() as string,T() as string dim nbLignes as integer, nbColonnes as integer
mais surtout il faut ajouter tout à la fin du traitement avant de sortir de la procédure ou du programme : erase T1, T2,T
PH a écrit :
rayan-cooper a écrit :
Bonjour,
J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai
pouvoir transferer leur contenu dans une variable tableau aux meme
dimensions
mais sans utiliser exel.
Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1
S = Input(LOF(1), #1)
Close
Bonjour, J'ai une application VB6 qui travaille avec des fichiers csv et j'aimerai pouvoir transferer leur contenu dans une variable tableau aux meme dimensions mais sans utiliser exel. Merci d'avance de votre aide
avec split cela doit marcher.
dim S as string, T1(),T2(), nbLignes as integer, nbColonnes as integer
Open Fichier For Input As #1 S = Input(LOF(1), #1) Close
dim S as string, T1() as string,T2() as string,T() as string dim nbLignes as integer, nbColonnes as integer
mais surtout il faut ajouter tout à la fin du traitement avant de sortir de la procédure ou du programme : erase T1, T2,T
Jean-marc
PH wrote:
PH a écrit :
redim T(0 to nbLignes,0 to nbColonnes)
For I=0 to nbLignes T(I)=split(T1(I),",") next I
Il ya plusieurs erreurs dans le code ci-dessus.
dim S as string, T1() as string,T2() as string,T() as string dim nbLignes as integer, nbColonnes as integer
Hello,
Ca ne fonctionne toujours pas, car l'affectation suivante est incorrecte : T(I)=split(T1(I),",")
On doit découper T1 et affecter individuellement dans T(x, y)
Voici un exemple simple d'implémentation :
' ' 8<-------------------------------------------------- ' Private Function Decoupe(ByVal fileName As String, _ ByVal separator As String, _ ByRef t() As String, _ ByRef nbLines As Long, ByRef nbCols As Long, _ ByRef errStr) As Boolean
Dim f As Integer Dim buffer As String Dim tBuf() As String Dim tLine() As String Dim i As Long Dim j As Long
On Error GoTo Decoupe_ERR
f = FreeFile Open fileName For Binary As #f buffer = Space$(LOF(f)) Get #f, , buffer Close #f
ReDim t(nbLines, nbCols) For i = 1 To nbLines tLine() = Split(tBuf(i - 1), separator) For j = 1 To nbCols t(i, j) = tLine(j - 1) Next j Next i Decoupe = True
Decoupe_END: Exit Function
Decoupe_ERR: errStr = "Erreur " & CStr(Err.Number) & " : " & Err.Description Resume Decoupe_END End Function
Private Sub Command1_Click() Dim fn As String Dim sep As String Dim nL As Long Dim nC As Long Dim t() As String Dim errStr As String Dim ret As Boolean Dim i As Long Dim j As Long
fn = "c:data.txt" sep = ","
ret = Decoupe(fn, sep, t, nL, nC, errStr) If ret Then Debug.Print "Lecture ok, Lignes = " & nL & " colonnes = " & nC Debug.Print "Tableau lu" For i = 1 To nL For j = 1 To nC Debug.Print t(i, j), Next j Debug.Print Next i Else Debug.Print "Erreur lecture : " & errStr End If
Erase t()
End Sub
Le Erase n'est nécessaire qu'en fonction du contexte: la mémoire allouée lors de Redim sera de toute façon libérée par l'OS à la fin de l'exécution du programme.
dim S as string, T1() as string,T2() as string,T() as string
dim nbLignes as integer, nbColonnes as integer
Hello,
Ca ne fonctionne toujours pas, car l'affectation suivante est
incorrecte :
T(I)=split(T1(I),",")
On doit découper T1 et affecter individuellement dans T(x, y)
Voici un exemple simple d'implémentation :
'
' 8<--------------------------------------------------
'
Private Function Decoupe(ByVal fileName As String, _
ByVal separator As String, _
ByRef t() As String, _
ByRef nbLines As Long, ByRef nbCols As Long, _
ByRef errStr) As Boolean
Dim f As Integer
Dim buffer As String
Dim tBuf() As String
Dim tLine() As String
Dim i As Long
Dim j As Long
On Error GoTo Decoupe_ERR
f = FreeFile
Open fileName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
ReDim t(nbLines, nbCols)
For i = 1 To nbLines
tLine() = Split(tBuf(i - 1), separator)
For j = 1 To nbCols
t(i, j) = tLine(j - 1)
Next j
Next i
Decoupe = True
Decoupe_END:
Exit Function
Decoupe_ERR:
errStr = "Erreur " & CStr(Err.Number) & " : " & Err.Description
Resume Decoupe_END
End Function
Private Sub Command1_Click()
Dim fn As String
Dim sep As String
Dim nL As Long
Dim nC As Long
Dim t() As String
Dim errStr As String
Dim ret As Boolean
Dim i As Long
Dim j As Long
fn = "c:data.txt"
sep = ","
ret = Decoupe(fn, sep, t, nL, nC, errStr)
If ret Then
Debug.Print "Lecture ok, Lignes = " & nL & " colonnes = " & nC
Debug.Print "Tableau lu"
For i = 1 To nL
For j = 1 To nC
Debug.Print t(i, j),
Next j
Debug.Print
Next i
Else
Debug.Print "Erreur lecture : " & errStr
End If
Erase t()
End Sub
Le Erase n'est nécessaire qu'en fonction du contexte: la
mémoire allouée lors de Redim sera de toute façon libérée
par l'OS à la fin de l'exécution du programme.
dim S as string, T1() as string,T2() as string,T() as string dim nbLignes as integer, nbColonnes as integer
Hello,
Ca ne fonctionne toujours pas, car l'affectation suivante est incorrecte : T(I)=split(T1(I),",")
On doit découper T1 et affecter individuellement dans T(x, y)
Voici un exemple simple d'implémentation :
' ' 8<-------------------------------------------------- ' Private Function Decoupe(ByVal fileName As String, _ ByVal separator As String, _ ByRef t() As String, _ ByRef nbLines As Long, ByRef nbCols As Long, _ ByRef errStr) As Boolean
Dim f As Integer Dim buffer As String Dim tBuf() As String Dim tLine() As String Dim i As Long Dim j As Long
On Error GoTo Decoupe_ERR
f = FreeFile Open fileName For Binary As #f buffer = Space$(LOF(f)) Get #f, , buffer Close #f
ReDim t(nbLines, nbCols) For i = 1 To nbLines tLine() = Split(tBuf(i - 1), separator) For j = 1 To nbCols t(i, j) = tLine(j - 1) Next j Next i Decoupe = True
Decoupe_END: Exit Function
Decoupe_ERR: errStr = "Erreur " & CStr(Err.Number) & " : " & Err.Description Resume Decoupe_END End Function
Private Sub Command1_Click() Dim fn As String Dim sep As String Dim nL As Long Dim nC As Long Dim t() As String Dim errStr As String Dim ret As Boolean Dim i As Long Dim j As Long
fn = "c:data.txt" sep = ","
ret = Decoupe(fn, sep, t, nL, nC, errStr) If ret Then Debug.Print "Lecture ok, Lignes = " & nL & " colonnes = " & nC Debug.Print "Tableau lu" For i = 1 To nL For j = 1 To nC Debug.Print t(i, j), Next j Debug.Print Next i Else Debug.Print "Erreur lecture : " & errStr End If
Erase t()
End Sub
Le Erase n'est nécessaire qu'en fonction du contexte: la mémoire allouée lors de Redim sera de toute façon libérée par l'OS à la fin de l'exécution du programme.