Dim monStreamReader As New StreamReader("T:\test.TXT") 'Stream pour la lecture Dim article, couleur, ligne As String Do ligne = monStreamReader.ReadLine If ligne <> "" Then article= ligne.Split(";")(3) couleur = ligne.Split(";")(4) If tableau.Items.Count = 0 Then Dim str As String() = New String(2) {} str(0) = article str(1) = couleur str(2) = +1 Dim lvi As New ListViewItem(str) tableau.Items.Add(lvi) Else With tableau Dim itm As ListViewItem itm = .FindItemWithText(ref, True, 0, True) Dim itm1 As ListViewItem itm1 = .FindItemWithText(couleur, True, 0, True) If Not itm Is Nothing And Not itm1 Is Nothing Then MsgBox("est deja dans la liste")> Dim str As String() = New String(2) {} str(2) = +1 Dim lvi As New ListViewItem(str) tableau.Items.Add(lvi) Else Dim str As String() = New String(2) {} str(0) = article str(1) = couleur str(2) = +1 Dim lvi As New ListViewItem(str) tableau.Items.Add(lvi) End If End With End If End If Loop Until ligne Is Nothing monStreamReader.Close()
Colonne 0;Colonne 1;Colonne 2;Article;Couleur blabla;blublu;bleble;Article1;Rouge blabla;blublu;bleble;Article2;Rouge blabla;blublu;bleble;Article3;Rouge blabla;blublu;bleble;Article1;Bleu blabla;blublu;bleble;Article2;Bleu blabla;blublu;bleble;Article3;Bleu blabla;blublu;bleble;Article1;Vert blabla;blublu;bleble;Article2;Vert blabla;blublu;bleble;Article3;Vert blabla;blublu;bleble;Article1;Rouge blabla;blublu;bleble;Article2;Bleu blabla;blublu;bleble;Article3;Vert
''' <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) Article = l(3) Couleur = l(4) End Sub 'les propriétés sont les données utiles de chaque ligne Public Property Article As String Public Property Couleur 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 Function ToString As String Return $"{Article}, {Couleur}" End Function End Class ''' <summary> ''' Classe qui représente ce que tu veux voir afficher ''' </summary> Class DatasTriees Public Sub New(ByVal Combinaison As DataTrucss, ByVal LaQuantite As Integer) Donnee = Combinaison Quantite = LaQuantite End Sub '1 combinaison Article / Couleur Public Property Donnee As DataTrucss 'la quantité de cette combinaison Public Property Quantite As Integer ''' <summary> ''' Surcharge de ToString pour afficher un résumé parlant de l'instance ''' </summary> ''' <returns></returns> Public Overrides Function ToString As String Return $"{Donnee.Article}, {Donnee.Couleur} x{Quantite}" End Function End Class
'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("trucss.csv") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) For Each l In lignes.Skip(1) datas.Add(New DataTrucss(l)) Next 'on va utiliser une requette Linq qui permet de regrouper les données par article et par couleur Dim regroupement = datas.GroupBy(Fonction(x) x.ToString) 'on va enfin créer la liste résultat (même si en fait le regroupement pourrait suffire), en prenant le premier item de chaque groupe et le nombre d'items Dim donneeTriees As List(Of DatasTriees) = New List(Of DatasTriees) For Each groupe In regroupement donneeTriees.Add(New DatasTriees(groupe.First(), groupe.Count)) Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionMerci pour ta réponse qui est assez compliqué pour moic'est pour cela que je t'ai conseiller de commencer par le cours de Tahé. Ce sera plus clair après.
Pour le code des 2 classes c’est à écrire dans module 1 ?non dans des fichiers de classe. En ajoutant un élément au projet tu peux choisir ce type de fichier. Tu verras plus tard que les Form et les controles sont des class particulières.
C,est pas gênant si dans le fichier .txt j,ai pas la première ligne mentionné colonne 0…., non il suffit d'enlever la requête Linq Skip(1)
C’est juste pour l’exemple je suppose ?oui et au cas où je n'avais pas bien interprété la structure que tu puisses t'y retrouver.
Désolé mais je vois pas comment alimenter ma listview de 3 colonnesje compléterai l'exemple demain.
car j ai jamais utiliser les datastriees.et personne d'autre d'ailleurs, j'ai écrit cette class exprès pour ton besoin. C'est ça tout le sens de l'objet.
'peuplement de la listview à partir de la collection de données triées For Each d In donneeTriees ListView1.Items.Add(New ListViewItem({d.Donnee.Article, d.Donnee.Couleur, d.Quantite.ToString()})) Next
'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()})) Next
Imports System.IO Public Class Form1 Private Sub ok_Click(sender As Object, e As EventArgs) Handles ok.Click '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("T:\\test.TXT") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) For Each l In lignes.Skip(1) datas.Add(New DataTrucss(l)) Next 'on va utiliser une requette Linq qui permet de regrouper les données par article et par couleur Dim regroupement = datas.GroupBy(Fonction(x) x.ToString) 'on va enfin créer la liste résultat (même si en fait le regroupement pourrait suffire), en prenant le premier item de chaque groupe et le nombre d'items Dim donneeTriees As List(Of DatasTriees) = New List(Of DatasTriees) 'peuplement de la listview à partir du regroupement For Each groupe In regroupement list.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString()})) Next For Each d In donneeTriees list.Items.Add(New ListViewItem({d.Donnee.Article, d.Donnee.Couleur, d.Quantite.ToString()})) Next End Sub End Class
Imports System.IO Public Class Form1 Private Sub ok_Click(sender As Object, e As EventArgs) Handles ok.Click '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("T:\\test.TXT") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) 'For Each l In lignes.Skip(1) ' datas.Add(New DataTrucss(l)) ' Next 'on va utiliser une requette Linq qui permet de regrouper les données par article et par couleur Dim regroupement = datas.GroupBy(Fonction(x) x.ToString) 'on va enfin créer la liste résultat (même si en fait le regroupement pourrait suffire), en prenant le premier item de chaque groupe et le nombre d'items Dim donneeTriees As List(Of DatasTriees) = New List(Of DatasTriees) 'peuplement de la listview à partir du regroupement For Each groupe In regroupement list.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString()})) Next For Each d In donneeTriees list.Items.Add(New ListViewItem({d.Donnee.Article, d.Donnee.Couleur, d.Quantite.ToString()})) Next End Sub End Class
'peuplement de la listview à partir du regroupement For Each groupe In regroupement list.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString()})) Next
For Each d In donneeTriees list.Items.Add(New ListViewItem({d.Donnee.Article, d.Donnee.Couleur, d.Quantite.ToString()})) Next
'on va enfin créer la liste résultat (même si en fait le regroupement pourrait suffire), en prenant le premier item de chaque groupe et le nombre d'items Dim donneeTriees As List(Of DatasTriees) = New List(Of DatasTriees)
Imports System.IO Public Class Form1 Private Sub ok_Click(sender As Object, e As EventArgs) Handles ok.Click '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("T:\test1.txt") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) Next
'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("T:\\test.TXT") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) For Each l In lignes.Skip(1) datas.Add(New DataTrucss(l)) Next 'on va utiliser une requette Linq qui permet de regrouper les données par article et par couleur Dim regroupement = datas.GroupBy(Fonction(x) x.ToString) 'peuplement de la listview à partir du regroupement For Each groupe In regroupement list.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString()})) Next
Colonne 0;Colonne 1;Verif;Article;Couleur;Colonne 5;Prix blabla;blublu;Non;Article1;Rouge;blevle;12 blabla;blublu;Oui;Article2;Rouge;blevle;11 blabla;blublu;Non;Article3;Rouge;blevle;10 blabla;blublu;Oui;Article1;Bleu;blevle;9 blabla;blublu;Non;Article2;Bleu;blevle;8 blabla;blublu;Oui;Article3;Bleu;blevle;12 blabla;blublu;Non;Article1;Vert;blevle;11 blabla;blublu;Oui;Article2;Vert;blevle;10 blabla;blublu;Non;Article3;Vert;blevle;9 blabla;blublu;Oui;Article1;Rouge;blevle;8 blabla;blublu;Non;Article2;Bleu;blevle;12 blabla;blublu;Oui;Article3;Vert;blevle;11 blabla;blublu;Non;Article1;Rouge;blevle;10 blabla;blublu;Oui;Article2;Rouge;blevle;9 blabla;blublu;Non;Article3;Rouge;blevle;8 blabla;blublu;Oui;Article1;Bleu;blevle;12 blabla;blublu;Non;Article2;Bleu;blevle;11 blabla;blublu;Oui;Article3;Bleu;blevle;10 blabla;blublu;Non;Article1;Vert;blevle;9 blabla;blublu;Oui;Article2;Vert;blevle;8 blabla;blublu;Non;Article3;Vert;blevle;12 blabla;blublu;Oui;Article1;Rouge;blevle;11 blabla;blublu;Non;Article2;Bleu;blevle;10 blabla;blublu;Oui;Article3;Vert;blevle;9
''' <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) Article = l(3) Couleur = l(4) Prix = Convert.ToDouble(l(6)) Verif = l(2) 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 Function ToString As String Return String.Format("{0}, {1}", Article, Couleur) End Function End Class
'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("trucss.csv") 'on va créer une List de DataTrucss et la remplir 'j 'ai mis une ligne d'entête, pour l'exclure j'utilise skip Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) For Each l In lignes.Skip(1) datas.Add(New DataTrucss(l)) Next 'on va utiliser une requette Linq qui permet de regrouper les données par article et par couleur 'si est seulement si verfi vaut "Oui" et le prix est inférieur à 10.5 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
For Each l In lignes.Skip(1) datas.Add(New DataTrucss(l)) Next
blabla;blublu;Non;Article1 blabla;blublu;Non blabla;hfghf;Non blabla;blublu;Oui;Article1;Bleu;blevle;9 blabla;blublu;Non;Article2;Bleu;blevle;8 blabla;blublu;Oui;Article3;Bleu;blevle;12 blabla;blublu;Non;Article1;Vert;blevle;11 blabla;blublu;Oui;Article2;Vert;blevle;10 blabla;blublu;Non;Article3;Vert;blevle;9 blabla;blublu;Oui;Article1;Rouge;blevle;8 blabla;blublu;Non;Article2;Bleu;blevle;12 blabla;blublu;Oui;Article3;Vert;blevle;11 blabla;blublu;Non;Article1;Rouge;blevle;10 blabla;blublu;Oui;Article2;Rouge;blevle;9 blabla;blublu;Non;Article3;Rouge;blevle;8 blabla;blublu;Oui;Article1;Bleu;blevle;12 blabla;blublu;Non;Article2;Bleu;blevle;11 blabla;blublu;Oui;Article3;Bleu;blevle;10 blabla;blublu;Non;Article1;Vert;blevle;9 blabla;blublu;Oui;Article2;Vert;blevle;8 blabla;blublu;Non;Article3;Vert;blevle;12 blabla;blublu;Oui;Article1;Rouge;blevle;11 blabla;blublu;Non;Article2;Bleu;blevle;10 blabla;blublu;Oui;Article3;Vert;blevle;9
Dim l As String() = LigneCsv.Split(";"c)
Dim LigneCsv As String = "blabla;blublu;Oui;Article3;Vert;blevle;9" Dim l(6) As String : Array.Copy($"{LigneCsv}{New String(";"c, 6)}".Split(";"c), l, 7)
";"c'est la string ; et ceci
";"cest le caractère ;
Dim l As String()initialise un tableau de string appelé l (comme ligne)
Dim l As String() = LigneCsv.Split(";"c)découpe une ligne du csv en fonction du caractère ; et stocke le résultat dans le tableau l
.Skip(1)et rien d'autre.
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))
Modifié le 17 févr. 2022 à 17:02
Effectivement je cherche la chartre du forum j'arrive plus a modifier mon texte en haut afin de respecter la forme