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

Windows Forms Discussion :

Utilisation d'un fichier csv


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut Utilisation d'un fichier csv
    Alors je n'ai pas du tout vu ça, j'ai juste vu ce qu'il y a de plus basique donc votre aide et vos conseils seront les bienvenues.

    Alors en fait j'ai un fichier csv et dans mon programme je dois afficher ou supprimer (j'ai pensé faire les 2) des données de ce fichier sur une période donnée. Alors la personne choisi une date de début puis une date de fin et moi je dois afficher ou supprimer 10 données par rapport à une date et un typePrise ("PRI") de mon tableau excel qui a juste 3523 lignes ^^(si affichage sous forme de tableau sur VB j'ai pensé). Je n'ai pas de base de données et je cherche une solution simple (D'ailleurs si vous avez des propositions je suis aussi preneur car là je vois pas du tout comment est ce que je vais me débrouiller avec mes bases lol)

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    je dirais dans l'ordre

    commence par lire ton fichier en le décomposant colonne par colonne

    exemple pris dans les Snippet de visual studio

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim filename As String = "C:\Test.txt"
            Dim fields As String()
            Dim delimiter As String = ","
            Using parser As New TextFieldParser(filename)
                parser.SetDelimiters(delimiter)
                While Not parser.EndOfData
                    ' Read in the fields for the current line
                    fields = parser.ReadFields()
                    ' Add code here to use data in fields variable.
     
                End While
            End Using

    pendant la lecture tu controles la ou les colonnes voulu,
    si la valeur ça correspond à ce que tu souhaites récupère ta ligne pour la mettre dans une collection ou un StringBuilder (bref quelque part).

    ensuite tu écris ou réécris le fichier avec le contenu que tu as mis de coté.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci pour tes indications, je comprends pas parfaitement tout mais je vais essayé de me renseigner.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    ce code ira mieux avec ce que tu veux faire

    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
     
            Dim filename As String = "C:\Test.txt"
            Dim fields As String()
            Dim delimiter As String = ";" 'caractère de spération
            Dim ligne As String = ""
            Dim JeGArde As New System.Text.StringBuilder
            Dim Newfilename As String = "c:\MonNouveauFichier.txt"
     
            Dim Lect As New IO.StreamReader(filename)
     
            ligne = Lect.ReadLine
     
            While ligne IsNot Nothing 'tant que je ne suis à la fin on continue
                fields = ligne.Split(delimiter)
     
                If fields.GetValue(2) = 54 Then 'si la colonne n°3 (index de début = 0) correspond à ma condition je la stock
                    JeGArde.AppendLine(ligne)
                End If
     
                ligne = Lect.ReadLine 'on passe à la ligne suivante
            End While
     
    'je réécris les lignes que j'ai gardé
            My.Computer.FileSystem.WriteAllText(Newfilename, JeGArde.ToString, False)

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ok je te remercie pour ton aide, je teste ce code.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    pas de pb,

    j'ai pas précisé mais il te faut quand même l'adapter à tes besoins.

    la bonne colonne avec les bonnes valeurs, .....

    tiens nous au courant.

    et si c'est bon n'oublie pas de mettre le post en

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    J'ai essayé ton code avec un fichier .txt mais le nouveau fichier est vide, est ce que tu connaitrais un code qui fonctionne avec un fichier csv (testé ça fonctionne pas) et qui créeerait automatiquement un nouveau fichier sans que l'on choisisse le nom ?
    Merci pour ton aide

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    1) fichier csv ou txt c'est exactement la même chose pour ton code.
    il se fou de l'extension ce qui compte c'est comment il est à l'intérieur et là (pour faire simple) c'est du fichier text.


    2) le code je l'ai testé avant de le posté.

    3) si ton fichier est vide c'est que tes conditions sont surement fausse
    je te conseils de mettre un point d'arret pour voir si ton code passe bien sur la ligne : JeGArde.AppendLine(ligne)

    4) remet le meme nom de fichier que celui de départ.
    si tu fais ça j'ai oublié une ligne donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Lect.Close() ' à rajouter, ça libère le fichier d'origine
     
            'je réécris les lignes que j'ai gardé
            My.Computer.FileSystem.WriteAllText(filename, JeGArde.ToString, False)
    j'viens de retester et ça marche encore.

    envoie ton code se sera peut être plus simple

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ok pour l'instant je teste en modifiant le nom du fichier pour pas tout effacer donc voila monde 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        Private Sub B_Lire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Lire.Click
            Dim filename As String = "C:\Documents and Settings\Stagiaire\Bureau\prises.csv"
            Dim fields As String()
            Dim delimiter As String = " " 'caractère de spération
            Dim ligne As String = ""
            Dim JeGArde As New System.Text.StringBuilder
            Dim Newfilename As String = "c:\prises.csv"
     
            Dim Lect As New IO.StreamReader(filename)
     
            ligne = Lect.ReadLine
     
            While ligne IsNot Nothing 'tant que je ne suis à la fin on continue
                fields = ligne.Split(delimiter)
     
                If fields.GetValue(1) = "PRI" Then ' Then 'si la colonne n°3 (index de début = 0) correspond à ma condition je la stock
                    JeGArde.AppendLine(ligne)
                End If
     
                ligne = Lect.ReadLine 'on passe à la ligne suivante
            End While
     
            'je réécris les lignes que j'ai gardé
            My.Computer.FileSystem.WriteAllText(Newfilename, JeGArde.ToString, False)
            MsgBox("Votre nouveau fichier a été créé !")
            Me.Close()
        End Sub
    Dans ma deuxième colonne j'ai plusieurs fois PRI et c'est celui là que je voudrais sinon je saisis 2 dates le problème c'est que dans le fichier csv c'est la date et l'heure et avec dateTimePicker g juste la date mais j'ai peut être la possibilité de récupérer les données du fichier csv pour les mettre dans uen liste déroulante.
    Au final je veux qu'il me reste les typePrise "PRI" sur une période donnée et voila.
    Si je suis pas clair dis moi !
    Encore merci pour ton aide

  10. #10
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    si les données sont pas confidentiel envoie le contenu de ton fichier.

    ou envoie moi le en message privée si tu veux pas le diffusé à tout le monde.

    ou change les données sauf la colonne N°2


    rajout de message :
    tu as testé si ta condition est bonne ?

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Je t'en est recréé un vite fait avec seulement 2 colonnes (celles qui posent problème ^^) après il y en a une dizaine d'autre et il y a beaucoup de données, je t'envoie ça en MP
    je sais pas comment te joindre le fichier en MP le mal lol !!
    C'est bon j'ai mis le point d'arrêt mais il ne s'est rien passé de spécial le fichier a été créé vide

  12. #12
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    12h28 : j'ai rien en message privé !

    rajout :
    désolé j'ai mal lu ton poste.

    pour envoyer un MP, il faut que tu sois identifier et clique sur le bouton MP sous un de mes messages et envoie le text comme ça !

    rajout : entre temps tu viens de le faire !

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Oui lol c'est normal je t'ai pas envoyé je sais pas comment te joindre le fichier :
    bn jte le montre en partie kom ça tu peu recoller ça sur excel en l'enregistrant en csv :
    dateHeure typePrise
    15/05/2008 15:52 PRE
    16/05/2008 15:52 PRI
    17/05/2008 15:52 PRI
    18/05/2008 15:52 CRA
    19/05/2008 15:52 PRI
    20/05/2008 15:52 PRI
    Merci

    Au cas t'es pas reçu

  14. #14
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    Juste pour info :

    un fichier csv n'est pas un fichier excel c'est un fichier text !
    tu l'ouvre avec le bloc note c'est tout pareil !

    excel lui ne fait qu'interpréter le contenu pour le disposer dans les celulles.

    je regarde et te tiens au courant

  15. #15
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    tu n'a pas regardé ta condition sinon tu aurais vu ton erreur.

    c'est bien ce que je te disais il fallait mettre un point d'arret, un clic que l'entete de ligne ça te met un point rouge et ton code s'arrete quand ça passe dessus !

    ce qui te permet de voir si ton code passe bien à un endroit donné et de voir les valeurs.

    de plus je t'ai également précisé que index de début = 0

    donc si tu test l'index 1 ça correspond à la 2e colonne

    0 => 1
    1 => 2
    2 => 3

    en fait ton code compare PRI avec la date donc forcement ça peut pas marché !

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ah ok ben pourtant je l'avais ce point rouge j'ai peut être mal manipulé pour PRI c'est bon je crois que j'ai compris mais pour la date du coup je fais comment ? (comme tu vois que dans le tableau c'est date + heure et que dans VB.net c'est juste une date qui apparait)
    Merci pour ton aide une fois de +
    (Excuse pour la lenteur de réponse mais j'étais parti déjeuner)

    Edit: C'est bon en ce qui concerne PRI merci beaucoup bon j'ai plus que le problème des dates maintenant (en fait ce qui m'a aidé c'est que tu me dises qu'en l'ouvrant avec le bloc note c'était pareil du coup j'ai constaté que les ";" étaient mis automatiquement et j'ai compris ce principe merci !!!

  17. #17
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    Alors la personne choisi une date de début puis une date de fin et moi je dois afficher ou supprimer 10 données par rapport à une date
    celon ta demande du début tu n'aura pas besoin de l'heure
    seul la date compte.

    car 08/02/2009 est différent de 08/02/2009 14:05

    est à mon avis ton utilisateur ne va as choisir une heure, minute,....


    sinon si tu en as vraiement besoin tu peux recomposer le tout dans une chaine :

    cdate(VariableDate & " " & variableHeure)

    j'ai testé ça marche !

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut précision
    Je visualise pas ta proposition, tu peux me donner un code concret stp ?
    Merci d'avance
    (L'heure apparait dans le fichier csv ça ne posera pas de problèmes ? Car en fait le fichier csv se crée automatiquement si j'ai bien tout suivi)

  19. #19
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    tu dois comparer une date avec une autre donc je dits juste que tu n'auras pas besoin de l'heure

    après il parrait que c toi qu'il le développe donc n'étant pas à ta place, si tu as vraiement besoin de l'heure je te dis comment recoller tes morceaux avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate = cdate( LaVariablequiContientLaDate & " " & LaVariablequiContientHeure)
    et ça te donne une vrai date


    je ne vois pas c que tu ne comprend pas ?

  20. #20
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ben c'est le datetimepicker qui me pose problème en fait je peux rien comparer avec, en fait le futur utilisateur il choisi sa date avec le datetimepicker il ne la saisit pas.
    Tu vois ce que je veux dire lol ??

    Edit : Et je garde juste la période choisie dans le fichier csv, le reste je supprime

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2008, 21h41
  2. Réponses: 2
    Dernier message: 24/01/2008, 13h48
  3. Utiliser un fichier CSV comme une base de données: contenu rogné
    Par therock dans le forum Accès aux données
    Réponses: 5
    Dernier message: 21/12/2007, 11h00
  4. [bash] utilisation de CAT/AWK pour parser un fichier CSV
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 32
    Dernier message: 25/07/2007, 23h34
  5. Utilisation fichier csv
    Par BFH dans le forum C
    Réponses: 3
    Dernier message: 15/11/2005, 09h50

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