'utilisation : lire_colonne_CSV(monfichier, séparateur de champs, lire la premiére ligne ?, n° de colonne à lire)
exemple :
Dim monfichier As String = Application.StartupPath & "\testsTOR.csv" 'chemin du fichier
Dim resultat1() As String = lire_colonne_CSV(monfichier, ";", False, 1)
If resultat1(0) = 2 Then MsgBox("numéro de colonne introuvable, vérifier !")
If resultat1(0) = 1 Then MsgBox("Fichier :" & monfichier & " introuvable vérifier!")
If resultat1(0) = 0 Then 'affichage des résultats car pas de défaut
For a As Integer = 1 To resultat1.Length - 1
RichTextBox1.Text += resultat1(a) & vbCrLf
Next
End If
Public
Public Function lire_colonne_CSV(ByVal fichier As String, ByVal séparateur As String, ByVal ligne_de_titre As Boolean, ByVal num_col As Integer) As String()
Dim colonnes_de_la_ligne As String() ' tableau de champs à lire pour une ligne Dim index_ligne As Integer = 0 ' index de ligne en cours Dim monfichier_existe As Boolean = My.Computer.FileSystem.FileExists(fichier) ' variable binaire qui test la présence du fichier Dim valeurs_lus(0) As String 'status du traitement de la fonction 'defaut = 0 => OK, defaut =1 => fichier pas trouvé, defaut =2 => colonne pas trouvé If monfichier_existe Then ' obligé pour l'instant de faire un tour à vide du fichier pour dimensionner le tableau en fonction du nb de ligne Using lirecsv As New Microsoft.VisualBasic.FileIO.TextFieldParser(fichier) lirecsv.SetDelimiters(séparateur) While Not lirecsv.EndOfData 'tant que pas fin de fichier colonnes_de_la_ligne = lirecsv.ReadFields() index_ligne += 1 ' on compte le nombre de ligne 'vérification de la demande de lecture If num_col > colonnes_de_la_ligne.Length - 1 Then valeurs_lus(0) = 2 GoTo fin End If End While End Using 'nombre de lignes luent moins la derniére et la premiére si ligne de titre Dim a As Integer If ligne_de_titre Then a = 1 Else a = 0 ' suppression de la ligne de titre ou pas ReDim valeurs_lus(index_ligne - a) 'redimensionnement du tableau valeurs_lus(0) = 0 'status fonction OK 'raz de l'index ligne pour remplissage des valeurs index_ligne = 1 Using lirecsv As New Microsoft.VisualBasic.FileIO.TextFieldParser(fichier) lirecsv.SetDelimiters(séparateur) While Not lirecsv.EndOfData 'tant que pas fin de fichier colonnes_de_la_ligne = lirecsv.ReadFields() ' on lit tous les champs de la ligne en cours 'élimine la premiére ligne si c'est la ligne des titres If Not ligne_de_titre Then ' au premier cycle on ne fait rien valeurs_lus(index_ligne) = (colonnes_de_la_ligne(num_col)) index_ligne += 1 End If ' mise à vrai lorsque la premiére ligne est passé ligne_de_titre = False End While ' transfert de la lecture Return valeurs_lus End Using Else valeurs_lus(0) = 1 End If fin: Return valeurs_lus End Function