Si je comprend bien on regarde le nombre de carractere par exemple pournon l est un tableau.
blabla;blublu;Non;Article1 blabla;blublu;Non
J'ai une erreur alors que dans le fichier j'ai supprier le . j'ai arrondie le prix
System.FormatException : 'Input string was not in a correct format.'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIf l.Length > 6 Then longueur = CDbl(Val(l(6)))
OpenFileDialog1.ShowDialog() Dim selectedFile As String selectedFile = OpenFileDialog1.FileName 'on va lire le fichier d'un coup avec la classe File et en faire un tableau dont chaque ligne est une entrée Dim lignes As String() = File.ReadAllLines(selectedFile)
''' <summary> ''' Classe représentant tes données ''' </summary> Class DataTrucss ''' <summary> ''' Un constructeur qui prend une ligne issue du CSV comme paramètre d'entrée ''' </summary> ''' <param name="LigneCsv"></param> Public Sub New(ByVal LigneCsv As String) Dim l As String() = LigneCsv.Split(";"c) Verif = l(2) If l.Length > 3 Then Article = l(3) If l.Length > 4 Then Couleur = l(4) If l.Length > 6 Then Prix = Convert.ToDouble(l(6)) End Sub 'les propriétés sont les données utiles de chaque ligne Public Property Article As String Public Property Couleur As String Public Property Prix As Double Public Property Verif As String ''' <summary> ''' Surcharge de ToString pour afficher un résumé parlant de l'instance, et qui va servir au tri ''' </summary> ''' <returns></returns> Public Overrides Fonction ToString As String Return String.Format("{0}, {1}", Article, Couleur) End Function ''' <summary> ''' List des fichiers déjà lus ''' </summary> ''' <returns></returns> Public Shared Property FichiersLus As List(Of String) = New List(Of String) End Class
''' <summary> ''' Ajoute des données à partir de chemins de fichiers valides ''' </summary> ''' <param name="Chemins">liste de chemins de fichiers valides</param> ''' <param name="LesDatas">Liste des données à compléter</param> Private Sub ChargeFichier(Chemins As List(Of String), LesDatas As List(Of DataTrucss)) Dim lignes As String() For Each f In Chemins 'on vérifie que le fichier n'a pas déjà été lus Dim cheminComplet As String = Path.GetFullPath(f) 'pour qu'il n'y ait aucune ambiguité entre 2 fichiers nommés pareils 1 dans le répertoire de l'exécutable et l'autre ailleurs If DataTrucss.FichiersLus.Contains(cheminComplet) Then Continue For 'si c'est le cas, on passe directement à l'itération suivante 'on ajoute ce nouveau chemin dans la liste des chemins lu DataTrucss.FichiersLus.Add(cheminComplet) 'on lit le fichier lignes = File.ReadAllLines(cheminComplet) 'on ajoute son contenu à la liste For Each l In lignes LesDatas.Add(New DataTrucss(l)) Next Next End Sub
'On crée une liste de fichiers de test Dim lesFichiers As List(Of String) = New List(Of String) From { "trucss.csv", "trucss2.csv" } 'on initialise la liste de toutes les données Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) 'on charge les fichiers ChargeFichier(lesFichiers, datas) 'Ha zut on a oublié un fichier lesFichiers.Add("trucss3.csv") ChargeFichier(lesFichiers, datas) 'on fait le regroupement Dim regroupement = datas.Where(Function(x) x.Verif = "Oui" And x.Prix < 10.5).GroupBy(Function(x) x.ToString()) 'peuplement de la listview à partir du regroupement For Each groupe In regroupement ListView1.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString(), groupe.First().Prix.ToString(), groupe.First().Verif})) Next
Fichiers csv|*.csv|Fichiers textes|*.txt|Tous les fichiers|*.*
'On crée une liste de fichiers de test Dim lesFichiers As List(Of String) = New List(Of String) Private Sub ButSelectFichiers_Click(sender As Object, e As EventArgs) Handles ButSelectFichiers.Click If OpenFileDialog1.ShowDialog() = DialogResult.OK Then lesFichiers.AddRange(OpenFileDialog1.FileNames) 'on ajoute les fichiers selectionnés à la liste End If End Sub
Private Sub butChargerDatas_Click(sender As Object, e As EventArgs) Handles butChargerDatas.Click Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) ChargeFichier(lesFichiers, datas) Dim regroupement = datas.Where(Function(x) x.Verif = "Oui" And x.Prix < 10.5).GroupBy(Function(x) x.ToString()) For Each groupe In regroupement ListView1.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString(), groupe.First().Prix.ToString(), groupe.First().Verif})) Next End Sub
Public Overrides Fonction ToString As String Return String.Format("{0}, {1}", article, Couleur) End Function