Placé un fichier csv dans une variable tableau (vb.net) [Résolu]

sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 10 juin 2005 à 12:57 - Dernière réponse : cs_liquide 1018 Messages postés samedi 22 mars 2003Date d'inscription 24 juin 2008 Dernière intervention
- 10 juin 2005 à 14:29
Bonjour,

J'ai un fichier csv contenant sur une même ligne séparé par des "," des intègres, string, et date je voudrai placer toutes ces données
dans une variable tableau.
Le nombre de colonne reste toujours le même, 6 colonnes.
Le nombre de ligne varie.

Existe il une méthode particulière pour ce faire ou dois je traité chaque ligne avec une boucle ?

Merci

\!/
00
!
Afficher la suite 

8 réponses

Meilleure réponse
cs_liquide 1018 Messages postés samedi 22 mars 2003Date d'inscription 24 juin 2008 Dernière intervention - 10 juin 2005 à 14:08
3
Merci
j'ai trouvé ca sur msdn :

Sub ReadTextLinesFromFile()
Dim file As New System.IO.StreamReader("c:\test.txt")
Dim oneLine As String
oneLine = file.ReadLine()
While (oneLine <> "")
Console.WriteLine(oneLine)
oneLine = file.ReadLine()
End While
file.Close()
End Sub

En dehors de ca, je serais plutot à conseiller les collections, les arraylist, ou sortedlist afin de mémoriser les données. Pour ma part le top du top c'est le sortedlist. En effet, le Sortedlist apporte une capacité immédiate, tel que le "Add" avec un "obj" et une "key", ce qui permet d'aussitot renseigner.

juste un petit exemple (non tester puisque pas de .net sur le poste actuel)

--Objet contenant tes données au nombre de 6
private structure S_Donne
dim D0 as string
dim D1 as string
dim D2 as string
dim D3 as string
dim D4 as string
dim D5 as string
end structure
private MyList as new sortedlist 'delclaration de ta sortedlist

--- tu as 6 données
dim Chaine as string = "......." ' chaine contenant toute ta ligne
dim Splitchaine() as string = split(chaine,",")

dim i as integer = 0
for i = 0 to ubound(splitchaine)
Dim Donne as S_Donne
with Donne
.D0 = Splitchaine(0).to string
.D1 =Splitchaine(1).to string
.D2 =Splitchaine(2).to string
.D3 =Splitchaine(3).to string
.D4 =Splitchaine(4).to string
.D5 =Splitchaine(5).to string

MyList.add(.D0, Donne) '(key, objet) en imaginant que ton critere principal est .D0
end with
next


--- D'un autre coté si tu as besoin de récupere tel ou tel objet "donne"
------- test si la key existe
if Mylist.containskey("ma1eredonnée") then
dim TakeObject as S_Donne = ctype(mylist("ma1eredonnée") , S_Donne)
' Supposant que tu as des labels
with TakeObject
.D0 = Label1.text
.D1 =Label2.text
.D2 =Label3.text
.D3 =Label4.text
.D4 =Label5.text
.D5 =Label6.text
end with
end if

--- Pour vider la list
MyList.clear

--- Il y a aussi les methodes pour "virer" les données indésirables et plein d'autres choses.

c'est juste un aperçu et je ne sais pas si ca pourra te servir, mais c'est un bon moyen de classer des données sans pour autant passer par les tableaux parfois embetant a gérer.

Bonne prog,
[mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n

Merci cs_liquide 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 10 juin 2005 à 13:04
0
Merci
Je dirais que tu dois charger ligne à ligne avec une boucle

++
Moustachu
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 10 juin 2005 à 13:31
0
Merci
Merci de votre attention Mr Moustachu,

traitement ligne par ligne dans une boucle OK.

Comment faire pour les colonnes ? elle sont au nombre de 6, je doit faire une recherche de caractère sur la "," pour séparé mes colone dans la variable ou il existe une fonction ?

pour déterminer le nombre de lignes dans le csv j'utilise la fonction (LOF) ou (Length) ?

Pour la variable tableau :
Redim préserve mavariable(x,5)

Encore merci

nouveau en .NT mais quelques expériance en VBA.

\!/
00
!
cs_moustachu 1079 Messages postés jeudi 14 novembre 2002Date d'inscription 1 janvier 2012 Dernière intervention - 10 juin 2005 à 13:51
0
Merci
Ok autant pour moi, j'ai lu trop vite... ça m'arrive trop souvent.



Je ne me souviens pas de fonctions qui te "parse" ta ligne (comme en
PHP par exemple), donc je te suggère de boucler sur ta ligne.
Cependant, quelqu'un a déjà du rencontrer le problème et ça ne
m'étonnerait pas que tu trouves sur le site une fonction qui le fait.



LOF doit te donner la taille en octets (ou bytes je sais pas) de ton
fichier mais pas le nombre de lignes (à moins que chaque ligne soit de
longueur fixe)

POur le nombre de lignes, je ferais un truc dans le genre : http://www.vbfrance.com/code.aspx?ID=45






++
Moustachu
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 10 juin 2005 à 14:15
0
Merci
Merci liquide,

Bon je vais testé cette méthode.
Je ne dois pas retravailler ces données je dois juste les lires sans plus mais en la passant dans une variable.
Pour en resté avec ma variable tableau, pour ce qui est de séparé mes colonne
j'ai trouvé ceci http://www.vbfrance.com/forum.v2.aspx?ID=434901
avec la méthode "split" je devrais y arrivé plus facilement ?

\!/
00
!
cs_liquide 1018 Messages postés samedi 22 mars 2003Date d'inscription 24 juin 2008 Dernière intervention - 10 juin 2005 à 14:18
0
Merci
lol, tu remarqueras que j'utilise aussi le split

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 10 juin 2005 à 14:20
0
Merci
Hola désolé, je suis comme moustachu je lis trop vite.

En fait je crois que en lisant mieux l'exemple c'est ce qu'il me faut.

Merci
Sacha
\!/
00
!
cs_liquide 1018 Messages postés samedi 22 mars 2003Date d'inscription 24 juin 2008 Dernière intervention - 10 juin 2005 à 14:29
0
Merci
petite précision, ne connaissant pas l'interieur de ton csv, la Key est une clé unique, j'ai juste imaginé comme critere, le .D0 comme élément principal et unique. si par ailleur il y avait des doublons , da ce cas précis, ca planterait. Il faurait alors passer le bouclage en prenant la Key le numéro "i" du bouclage, pour eviter les erreurs.

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n

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.