IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Extraire la première ligne d'une chaine de caractère


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Extraire la première ligne d'une chaine de caractère
    Bonjour,

    j'ai des données que j'importe d'un fichier *.CSV. Je souhaite mettre ces données dans un tableau. Pour cela, j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Module Module1
     
        Sub main()
            'http://msdn.microsoft.com/fr-fr/library/yw67h925%28VS.80%29.aspx
            Dim fileReader As System.IO.StreamReader
            fileReader = _
            My.Computer.FileSystem.OpenTextFileReader("C:\Documents and Settings\Mes documents\VB\Classeur1.csv")
            Dim ToutLeTexte As String
            ToutLeTexte = fileReader.ReadToEnd()
            MsgBox(ToutLeTexte)
        End Sub
    End Module
    Lorsque j'exécute ce code, ma variable ToutLeTexte contient :

    153,0141418;0,459403456;51,35011068;15,284839
    166,3136136;0,599539206;32,87270608;31,98955408
    165,9946745;0,514952116;28,58653956;34,7688811
    ...
    (je n'ai mis que les 3 premières lignes). Pour mettre les données dans un tableau, il faut que je connaisse le nombre de lignes et le nombre de colonnes. Comment puis-je faire ?

    Je vous remercie par avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Utilise ReadLine et pas ReadToEnd.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Tu dois faire une boucle While avec la méthode readline, tu peux ainsi connaître le nombre de lignes à l'aide d'un compteur. Ensuite, pour le nombre de colonnes tu peux faire un split d'une ligne en te servant du ";" comme argument de séparation.

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    il est aussi possible de compter le nombre de ligne comme ceci :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Imports System.IO
     
    Dim NbreLigne As Integer       
    Dim ToutLeTexte As String()
     
    ToutLeTexte = File.ReadAllLines("C:\Documents and Settings\Mes documents\VB\Classeur1.csv")
    NbreLigne = ToutLeTexte.Length
    MsgBox(NbreLigne)

    Ou bien comme cité précédement par une lecture complete du fichier dans une boucle :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Imports System.IO
     
    Dim NbreLigne As Integer = 0
    Dim fileReader As System.IO.StreamReader
     
    fileReader = My.Computer.FileSystem.OpenTextFileReader("C:\Documents and Settings\Mes documents\VB\Classeur1.csv")
     
    Do While (fileReader.EndOfStream = False)
        fileReader.ReadLine()
        NbreLigne += 1
    Loop
     
    fileReader.Close()
    MsgBox(NbreLigne)

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En C# ca donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String [] MesLignes = ToutleTexte.Split(Environment.NewLine,
                                  StringSplitOptions.RemoveEmptyEntries) ;
    Float [,] MonTableau= new Float[MesLignes.Length,4] ;
    for (int i=0;i<MesLignes.Length;i++)
    {
       string [] MesNombres=MesLignes.Split(';') ;
       for (int j=0;i<Math.Max(MesNombres.Length,4);j++)
      {
          float f ;
          if (float.TryParse(MesNombres[j],out f} MonTableau[i,j]=f ;
          else ... // erreur valeur incorrecte
      }
    }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup à tous. J'ai testé chaque méthode j'ai réussi ac le code:

    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
     
    Imports System.IO
     
    Dim NbreLigne As Integer = 0
    Dim fileReader As System.IO.StreamReader
     
    fileReader = My.Computer.FileSystem.OpenTextFileReader("C:\Documents and Settings\Mes documents\VB\Classeur1.csv")
     
    Do While (fileReader.EndOfStream = False)
        fileReader.ReadLine()
        NbreLigne += 1
    Loop
     
    fileReader.Close()
    MsgBox(NbreLigne)
    Pour le langage en C# merci quand même mais je débute avec le VB et j'ai beaucoup de mal alors je vais m'en tenir à celui-ci pour l'instant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Sélectionner les 3 premières lettre d'une chaine de caractères
    Par souad12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2012, 10h10
  2. Réponses: 0
    Dernier message: 17/09/2012, 20h00
  3. Réponses: 3
    Dernier message: 05/05/2011, 12h41
  4. Retourner à la ligne dans une chaine de caractère
    Par GreatDeveloperOnizuka dans le forum C#
    Réponses: 2
    Dernier message: 12/03/2010, 13h25
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo