Bonjour,
J'ai a rechercher dans un fichier CSV (contenant plusieurs lignes) une valeur incluse dans un combobox. Ensuite, je veux afficher les lignes avec cette valeur dans un DGV.
J'ai testé 2 solutions sans succès. Admettons ici que je cherche les lignes contenant l'ID "1", à la 3e colonne de mon CSV.
1-
Avec la fonction:
Le problème c'est que si je cherche l'ID "1", il peut aussi être contenu dans l'heure (ex: 13h31). Donc il me retournera toute les lignes qui ont "1" à l'intérieur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part InStr(String1, String2)
Noter ici que la largeur des colonnes n'est pas prédéfini, donc je ne pourrais pas faire une comparaison de string à partir du Xe caractère par exemple.
2-
Je me suis donc dit que j'allais vérifier à la position exacte, soit la colonne 3. J'incrémente donc un compteur qui lit char par char avec un StreamReader, quand j'ai passé 2 virgules, je suis rendu à la colonne 3. Alors je concactène les char jusqu'à la virgule suivant et ensuite je vérifie ce mot avec mon filtre. Je trouve les bonnes lignes.
Le problème c'est que le curseur est rendu à cette position, et si j'utilise StreamReader.ReadLine(), il lit la ligne jusqu'à la fin, mais en ommetant le début (évidemment car le curseur est rendu à la colonne 4). Moi je veux toute la ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 While SR.EndOfStream = False While compteur < index Ascii = SR.Read If Ascii = 44 Then compteur += 1 End If End While compteur = 0 Ascii = 0 While Ascii <> 44 Ascii = SR.Read If Ascii <> 44 Then mot += Convert.ToChar(Ascii) End If End While If mot.ToLower = filtre.ToLower Then MessageBox.Show(SR.ReadLine()) Else SR.ReadLine() End If mot = "" End While End With
Partager