fichier.IndexOf(tbachatdate.Text, StringComparison.OrdinalIgnoreCase) > 0)utilise la méthode Contains, il y a aussi une surcharge avec laquelle tu peux indiquer d’ignorer la casse et ça fait une instruction de moins car le résultat est directement un booléen.
Dim listefichierbon As New List(Of String) For Each fichier As String In IO.Directory.GetFiles(Form2.cheminapprobarre.Text, "*.csv") Dim info As New IO.DirectoryInfo(Form2.cheminapprobarre.Text) 'Controle selon critére (textbox) If (fichier.IndexOf(tbachatdate.Text, StringComparison.OrdinalIgnoreCase) > 0) Then 'Ajout dans la list listefichierbon listefichierbon.Add(fichier) End If Next 'Lecture de tout les fichiers For Each fichierbon As String In listefichierbon 'Lecture du fichier Dim lecturefichierselectionne = File.ReadAllLines(fichierbon) 'Récupération des informations des fichiers et ecriture dans une list contenudesfichiers Dim contenudesfichiers = New List(Of objet) For Each item In lecturefichierselectionne 'Décompose le fichier selon carractére (;) Dim parts = item.Split(New Char(){";"}, StringSplitOptions.RemoveEmptyEntries) contenudesfichiers.Add(New objet With {.Nom = parts(0), .Couleur = parts(1),.quantite = parts(2)}) Next 'Regroupement et comptage des objets Dim objets_group = contenudesfichiers _ .GroupBy(Function(objet) New With {Key objet.Nom, Key objet.Couleur}) _ .Select(Function(groupe) New With {.Nom = groupe.Key.Nom, .Couleur = groupe.Key.Couleur, .Nombre = groupe.Count()}) 'Affichage des fruits groupés et comptés For Each objet In objets_group achatlvcontenubarre.Items.Add($"{objet.Nom}, {objet.Couleur}, {objet.Nombre}") Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim contenudesfichiers = New List(Of objet), d'abord nommer une classe objet n'est pas une bonne idée, un objet en vb.net ça a un sens précis. Nomme cette classe en fonction de ce qu'elle représente vraiment (il me semble en fonction de tes questions précédentes que Article serait adapté). Mais surtout tu n'as pas fourni le code de cette classe et ça pourrait être important
'Lecture de tout les fichiers For Each fichierbon As String In listefichierbon 'Lecture du fichier Dim lecturefichierselectionne = File.ReadAllLines(fichierbon) 'Récupération des informations du fichiers Dim contenudesfichiers = New List(Of article) For Each item In lecturefichierselectionne Dim parts = item.Split(New Char(){";"}, StringSplitOptions.RemoveEmptyEntries) contenudesfichiers.Add(New article With {.Nom = parts(0), .Couleur = parts(1), .quantite = parts(2)}) Next 'Regroupement et comptage des objets Dim objets_group = contenudesfichiers _ .GroupBy(Function(objet) New With {Key objet.Nom, Key objet.Couleur}) _ .Select(Function(groupe) New With {.Nom = groupe.Key.Nom, .Couleur = groupe.Key.Couleur, .quantite = groupe.Count()}) 'Affichage des nom groupés et comptés For Each objet In objets_group achatlvcontenubarre.Items.Add($"{objet.Nom}, {objet.Couleur}, {objet.quantite}")
Dim parts = item.Split(New Char(){";"}, StringSplitOptions.RemoveEmptyEntries)
contenudesfichiers.Add(New article With {.Nom = parts(0), .Couleur = parts(1), .quantite = parts(2)})
Dim listefichierbon As New List(Of String) For Each fichier As String In IO.Directory.GetFiles(c:\test, "*.csv") Dim info As New IO.DirectoryInfo(c:\test,.Text) If (fichier.IndexOf(tbachatdate.Text, StringComparison.OrdinalIgnoreCase) > 0) Then listefichierbon.Add(fichier) End If Next 'Lecture de tout les fichiers For Each fichierbon As String In listefichierbon 'Lecture du fichier Dim lecturefichierselectionne = File.ReadAllLines(fichierbon) 'Récupération des informations du fichiers Dim contenudesfichiers = New List(Of article) For Each item In lecturefichierselectionne Dim parts = item.Split(New String(){";"}, StringSplitOptions.RemoveEmptyEntries) contenudesfichiers.Add(New article With {.Nom = parts(0), .Couleur = parts(1), .quantite = parts(2)}) Next 'Regroupement et comptage des objets Dim objets_group = contenudesfichiers _ .GroupBy(Function(objet) New With {Key objet.Nom, Key objet.Couleur}) _ .Select(Function(groupe) New With {.Nom = groupe.Key.Nom, .Couleur = groupe.Key.Couleur, .quantite = groupe.Count()}) 'Affichage des noms groupés et comptés For Each objet In objets_group achatlvcontenubarre.Items.Add($"{objet.Nom}, {objet.Couleur}, {objet.quantite}") Next Next
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("C:\test\test1.csv") 'on va créer une List de DataTrucss et la remplir Dim datas As List(Of DataTrucss) = New List(Of DataTrucss) For Each l In lignes datas.Add(New DataTrucss(l)) Next 'regrouper les données par article et par couleur Dim regroupement = datas.GroupBy(Function(x) x.ToString) For Each groupe In regroupement listview1.Items.Add(New ListViewItem({groupe.First().Article, groupe.First().Couleur, groupe.Count.ToString()})) Next End Sub End Class
Class DataTrucss Public Sub New(ByVal LigneCsv As String) Dim l As String() = LigneCsv.Split(";"c) Article = l(0) Couleur = l(1) End Sub Public Property Article As String Public Property Couleur As String Public Overrides Function ToString() As String Return $"{Article}, {Couleur}" End Function End Class 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 Public Overrides Function ToString() As String Return $"{Donnee.Article}, {Donnee.Couleur} x{Quantite}" End Function End Class
Dim LVI As ListViewItem = achatlvcontenubarre.Items.Add(objet.Nom) LVI.SubItems.Add(objet.Couleur) LVI.SubItems.Add(objet.quantite)
Dim lecturefichierselectionne = File.ReadAllLines(fichierbon) 'Récupération des informations du fichiers For Each item In lecturefichierselectionne Dim parts = item.Split(New String(){";"}, StringSplitOptions.RemoveEmptyEntries) contenudesfichiers.Add(New article With {.Nom = parts(0), .Couleur = parts(1), .quantite = parts(2)}) Next Next 'Regroupement et comptage des objets Dim objets_group = contenudesfichiers _ .GroupBy(Function(objet) New With {Key objet.Nom, Key objet.Couleur, Key objet.quantite}) _ .Select(Function(groupe) New With {.Nom = groupe.Key.Nom, .Couleur = groupe.Key.Couleur, .quantite = groupe.Key.quantite}) 'Affichage des noms groupés et comptés For Each objet In objets_group Dim LVI As ListViewItem = achatlvcontenubarre.Items.Add(objet.Nom) LVI.SubItems.Add(objet.Couleur) LVI.SubItems.Add(objet.quantite) Next