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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
InStr(String1, String2)
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.

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.

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
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.