romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011
-
20 mars 2009 à 13:51
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 2016
-
23 mars 2009 à 16:36
Bonjour,
l'année dernière j'avais déjà eu recours à ce forum.. et cela m'a beaucoup aidé.
Merci encore, notamment à un certain "Casy". :)
Cette année j'ai un autre projet à faire.
J'aimerais savoir ceci :
Comment s'y prendre pour lire un CSV, qui se présente comme ceci :
;1991;1992;1993;......;2006
Allemagne;206;152;
France ;215;452
Belgique;
...
...
Je dois utiliser la fonction streamreader (donc je sais qu'il faut importer IO)
et j'aimerais mettre ces données dans un tableau
Ensuite, j'aimerai qu'au chargement du form (et donc au chargement du
fichier csv et à la suite de la "construction" du tableau) pouvoir
utiliser les données qui sont dans le tableau, pour afficher des
informations sur chaque pays, comme ceci :
On a un ComboBox dans lequel il y a les pays, et en sélectionnant un
pays dans le ComboBox, les chiffres qui lui sont associés
apparaissent.. dans des TextBox par exemple.(et pour ca je dois
utiliser la commande "Select" ou "Select Case".. ou peut-être "If Case.." je ne sais plus..)
Mais il faut donc que cette recherche d'info (quand on sélectionne un pays) se fasse dans ce tableau.
Et.; petite question, comment je gère la "cellule" vide, en 1ère ligne, 1ère colonne ???
pour info, après cela, je vais utiliser ChartDirector avec les données
de ce tableau... pour faire des graphiques (pour ceux qui ne
connaissent pas Chart Director ;) )
Voilà, je ne sais pas si je suis assez clair, n'hésitez pas à me poser des questions si besoin.
Serait-il possible d'avoir des extraits de code de votre part ??
Mais que des choses très simples, très basiques (sans mauvais jeu de
mot ;) ), ça vous prendra moins de temps à faire ^^ Je ne vous demande
pas monts et merveilles mais juste un petit peu d'aide.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 20 mars 2009 à 14:38
Bonjour,
J'ai fais un petit exemple je sais pas si ça fonctionne car j'ai pas fait de teste dessus
Private tdonnée As New ArrayList
_________________________________________________________________________________________
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim f As New StreamReader("monfichier.csv")
Do Until f.Peek = -1 'Lecture du fichier ligne par ligne
Dim MaLigne As String = f.ReadLine
If MaLigne = "" Then
Continue Do
Else
Dim sourcecsv() As String = MaLigne.Split(";")
ComboBox1.Items.Add(sourcecsv(0)) ' on ajoute tout les pays dans la combo
tdonnée.Add(MaLigne) ' on stock toute les donner lu dans un tableau général
End If
Loop
End Sub
_________________________________________________________________________________________
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
For i As Integer = 0 To tdonnée.Count - 1
If tdonnée.Item(i).ToString.IndexOf(ComboBox1.Text) >= 0 Then
Dim lecdonnées() As String = tdonnée.Item(i).ToString.Split(";")
For j As Integer = 0 To lecdonnées.Count - 1 'lecture des donnée qui correspond au pays
MsgBox(lecdonnées(j)) 'lecture des données une par une
Next
End If
Next
End Sub
End Class
_________________________________________________________________________________________
Sa fait super plaisir de lire quelle un qui explique bien son problème :)
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 20 mars 2009 à 19:47
Bonsoir,
J'ai retrouvé ceci, cela ressemble plus à ce que je recherche en fait..
J'ai quelques questions par rapport à ce code :
quand je l'exécute, il me lit les données présentes dans mon fichier .csv, les mets dans un tableau, puis il prend les données de ce tableau et les mets dans un fichier .txt... c'est bien ça ?
Si je me trompe, pourriez-vous me donner quelques explications supplémentaires s'il vous plaît ?
Et si c'est bien le cas, comment je poursuis mon programme ?
Comment je fais pour aller chercher telle donnée, situé dans telle ligne et telle colonne
Est-ce que cela ressemble à : TabCar(numéroligne, numérocolonne),
auquel cas j'écrirais quelque chose comme :
sw.Writeline(TabCar(num..,num...)) ??
Je vous laisse regarder ce code, merci d'avance pour vos réponses :)
N'hésitez pas pour les questions si je ne suis pas assez précis dans mes explications !
Module Module1
Sub Fichier_LireEcrire()
'
' ----------------------------------------------------------------------
' Déclarations et initialisations des variables locales
' ----------------------------------------------------------------------
'
' Fichiers
'
Dim NomFichierEntree As String = _
"D:\Mes documents" & _
"Accidents.csv"
Dim NomfichierSortie As String = _
"D:\Mes documents" & _
"DonneesLues.txt"
'
' Stream
'
Dim sr As StreamReader = New StreamReader(NomFichierEntree)
Dim sw As StreamWriter = New StreamWriter(NomfichierSortie)
'
' Variables "scalaires"
'
Dim LigneLue As String = Nothing
Dim MaChaine As String = Nothing
Dim CompteurDElement As Integer = 0
'
' Variable tableau
'
Dim TabCar() As String = Nothing
'
' Boucle de parcours du fichier
'
Do While sr.EndOfStream = False
'
'
'
LigneLue = sr.ReadLine()
'
'
'
ReDim Preserve TabCar(CompteurDElement)
'
'
'
TabCar(CompteurDElement) = LigneLue
'
'
'
CompteurDElement += 1
'
Loop
'
' Ecriture des éléments contenus dans TabCar
' dans le fichier de sorti.
'
For i As Integer = 0 To TabCar.GetUpperBound(0)
sw.WriteLine(TabCar(i))
Next i
'
' Fermeture des fichiers ouverts
'
sr.Close()
sw.Close()
'
'----------------------------------------------------------------------
' Fin du sous-programme
'----------------------------------------------------------------------
'
End Sub
End Module
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 mars 2009 à 21:46
Dsl, je n'ai pas trop le temps de t'expliquer le code que je donne, mais je t'invite à consulter l'aide pour le comprendre.
La première ligne est à mon avis, à ignorer car il semble qu'elle soit la ligne des entetes de colonnes. Elle ne contient donc pas de données en soi, si ce n'est l'année à laquelle correspond les données en dessous
Public TabCode As String() = {}
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim sr As New System.IO.StreamReader("C:\temp\classeur1.csv")
'Ignore la
première ligne
sr.ReadLine()
Do While sr.EndOfStream = False
ReDim Preserve TabCode(TabCode.GetLength(0))
TabCode(TabCode.GetLength(0) - 1) =
sr.ReadLine()
Loop
For i As Integer = 0 To TabCode.GetUpperBound(0)
ComboBox1.Items.Add((TabCode(i).Split(";"c))(0))
Next
ComboBox1.SelectedIndex = 0
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
ComboBox1.SelectedIndexChanged
Dim i As Integer = ComboBox1.SelectedIndex
TextBox1.Text = (TabCode(i).Split(";"c))(1)
TextBox2.Text = (TabCode(i).Split(";"c))(2)
TextBox3.Text = (TabCode(i).Split(";"c))(3)
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 20 mars 2009 à 21:54
Bonjour,
Effectivement, le code fais la lecture puis écrit dans un texte ...
ReDim n'est plus utiliser dans le dot net il est su moins encore supporter mais chiant a utiliser (pardon pour le mot chiant)
Le module dans l'état ou il est sers a rien, enfin si, juste a lire le fichier CSV puis le mettre dans un texte.
Pour ce qui concerne le petit bout de code que j'ai donné il est possible qu'avec une version de visual studio moins recente a 2008 cela ne fonctionne pas !
il faudra changé "lecdonnées.Count" par "UBound(tdonnée)"
Je viens de faire le test avec le code que j'ai donné plus, cela fonctionne sans aucun probleme
je vais le redonner encore une fois dans son intégralité
____________________________________________________
Imports System.IO
____________________________________________________
Public Class Form1
Private tdonnée As New ArrayList
____________________________________________________
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
For i As Integer = 0 To tdonnée.Count - 1
If tdonnée.Item(i).ToString.IndexOf(ComboBox1.Text) >= 0 Then
Dim lecdonnées() As String = tdonnée.Item(i).ToString.Split(";")
For j As Integer = 1 To lecdonnées.Count - 1 'lecture des donnée qui correspond au pays
MsgBox(lecdonnées(j)) 'lecture des données une par une
Next
End If
Next
End Sub
____________________________________________________
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim f As New StreamReader("monfichier.csv")
Do Until f.Peek = -1 'Lecture du fichier ligne par ligne
Dim MaLigne As String = f.ReadLine
If MaLigne = "" Then
Continue Do
Else
Dim sourcecsv() As String = MaLigne.Split(";")
ComboBox1.Items.Add(sourcecsv(0)) ' on ajoute tout les pays dans la combo
tdonnée.Add(MaLigne) ' on stock toute les donner lu dans un tableau général
End If
Loop
End Sub
End Class
____________________________________________________
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 21 mars 2009 à 12:27
Alors.. j'ai testé la réponse de casy, ça fonctionne à merveille !
Pour ta réponse TroXsa, [../auteur/TROXSA/18536.aspx ] désolé, j'ai encore des erreurs..
Néanmoins j'ai à peu près compris comment fonctionne vos 2 solutions, donc à un grand merci à vous 2 !!!!
Il se peut.. il y a même de grandes chances, pour que je vous sollicite à nouveau d'ici à quelques jours pour l'utilisation de mes données...
Je dois voir avec mon "équipe ; on va probablement utiliser les données pour faire des graphiques avec ChartDirector. Mais on nous a également parler de l'utilisation d'un Datagrid, dans lequel on affichera les données du csv, etc...
Bref ! Tout ça est encore flou. En tous cas, encore merci à vous 2.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 23 mars 2009 à 09:24
Bonjour romanosky35,
A l'ocaz pourrais tu essayer avec la version 2008 Express ?
Il me semble que la version utiliser y fais beaucoup, il y a beaucoup plus de fonctionnalité et d'amélioration dans 2008 que dans 2005
romanosky35
Messages postés50Date d'inscriptionsamedi 16 janvier 2010StatutMembreDernière intervention23 juin 2011 23 mars 2009 à 15:31
Et bien je l'avais installée sur mon ordinateur mais.. va savoir pourquoi, cela est "entré en conflit" avec plusieurs logiciels dont internet explorer, ou bien la msie en veille de l'ordi aussi...
On me demandait toujours s'il fallait déboguer je ne sais quoi... (alors que VB n'était même pas lancé...)
J'ai préféré revenir au 2005... pour le moment.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 23 mars 2009 à 15:39
Bonjour,
ok, merci pour les informations :)
je pense que c'est un problème de version simplement, maintenant que je sais que tu travail en 2005 je ferais attention au code que je te donnerais :)
mais précise le a chaque fois que tu met un nouveau message