Faire un split à 2 niveaux [Résolu]

Signaler
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006
-
Messages postés
10
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
21 juillet 2011
-
bonjour,
je souhaiterais recuperer les données d'un fichier texte et les positionner dans un tableau dynamique pour ensuite les retraivailler.

mon fichier texte ce compose de la sorte

nom;prenom;adresse;code postal;ville
nom1;prenom1;adresse1;code postal1;ville1

Dim sFilename As String
sFilename = Server.MapPath(chemin & fichier)
Dim oFileread As System.IO.StreamReader


' on vient lire le fichier
oFileread = New System.IO.StreamReader(sFilename)
' on le split dans une table
Dim trad,tbl_data As array

trad = Split(oFileread.ReadToEnd, vbCrLf, -1, 1)
' on referme le fichier
oFileread.Close()

mais le hic c'est que là je recupere toute la ligne alors que je voudrais avoir
trad(0,0) =nom
trad(0,1)=prenom
trad(0,2)=adresse
....
trad(1,0) =nom1
trad(1,1)=prenom1
trad(1,2)=adresse1

comment dois je faire???
merci

4 réponses

Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006

Ca y est j'ai trouvé ce que je voulais

<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>

<SCRIPT language="VB" runat="server">
Dim Temp As New System.Text.StringBuilder
'Chemin d'accès de la page à insérer
dim filename , filepath as string
' mon fichier a traiter
filename="mon_fichier.csv"
' mon repertoire sur le serveur
filepath="mon_repertoire"
dim ch_file As String = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath) & filepath & filename
dim oFileread As System.IO.StreamReader
' lecture du fichier
oFileread = New System.IO.StreamReader(ch_file)
' on le split dans une table
dim trad as array
trad = Split(oFileread.ReadToEnd, vbCrLf, -1, 1)
' fermeture du fichier
oFileread.Close()
' collecte les données ligne par ligne pour les mettre dans un tableau dynamique
dim i,z as integer, tbl_data(ubound(trad),2) as string, trad1 As string()
for i = 0 to ubound(trad) - 1
trad1 = split(trad(i).ToString, ";")
for z = 0 to 2
tbl_data(i,z) = trad1(z).ToString
next
next


' affiche vos données
for i = 0 to ubound(trad) - 1
response.write ("nom : " & tbl_data(i,0) & "
prenom : " & tbl_data(i,1) & "
email : " & tbl_data(i,2) & "
")
next
End If
</script>
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
bonjour,

c'est normal que tu as ca tu n'as fait que découper ton fichier en plusieurs lignes, il faut maintenant découper tes lignes en plusieurs mots.

dim trad as string()

for i as integer = 0 to trad.length
trad(i) = trad(i).split(";")
next


<HR>
Cyril - MVS - MCP
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006

Merci pour ta réponse mais en copiant ton code j'obtiens ce message d'erreur

Une valeur de type 'Tableau 1-dimensionnel de String' ne peut pas être convertie en 'String'.

sur la ligne

trad(i) = trad(i).split(";")

Mais avec ton exemple j'obtiens bien un tableau de type
trad(0,0) =nom
trad(0,1)=prenom
trad(0,2)=adresse
....
trad(1,0) =nom1
trad(1,1)=prenom1
trad(1,2)=adresse1

car j'ai l'impression que je vais plutot obtenir ceci
trad(0) =nom
trad(1)=prenom
trad(2)=adresse
....
Messages postés
10
Date d'inscription
jeudi 9 février 2006
Statut
Membre
Dernière intervention
21 juillet 2011

Faut il des references particulieres car je n'arrive pas a incrementer ce code?
Merci 

Cristiny