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 :

[VB.NET]Compilation de fichiers csv


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut [VB.NET]Compilation de fichiers csv
    Bonjour à tous,

    J'ai besoin de compiler plusieurs fichiers *.csv en vb.net mais j'ai cherché, j'ai bien trouvé des trucs en C# que je n'arrive pas a traduire.

    J'avais trouvé et adapté un bout de code pour faire ça en vba excel mais je n'arrive pas à le traduire. Le Open ne fonctionne pas :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        Sub CompilationFichiersTexte_ADO()
            '
            'Nécessite d'activer la référence
            '"Microsoft ActiveX Data Objects 2.x Library"
            '
            Dim Rc As ADODB.Recordset
            Dim cn As String, Chemin As String, Fichier As String, x As String
            Dim i As Long
     
            'répertoire contenant les fichiers texte
            Chemin = "C:\Documents and Settings\****\"
     
            'Ouvre un nouveau fichier Texte pour compiler les données
            '! attention à ne pas le placer dans le meme repertoire que les autres fichiers...
            Open "C:\Documents and Settings\****\Compilation.csv" For Output As #1
     
     
     
            'boucle sur l'ensemble des fichiers txt
            Fichier = Dir(Chemin & "\*.csv")
            Do While Fichier <> ""
     
                '----- requète pour récupérer le contenu du fichier txt
                cn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                "Dbq=" & Chemin & ";Extensions=asc,csv,tab,txt"
     
                Rc = New ADODB.Recordset
                Rc.Open(Source:="SELECT * FROM [" & Fichier & "]", ActiveConnection:=cn)
     
                If Not Rc.EOF Then
     
                Print #1, Rc.GetString(, , ";", vbCrLf, "");
                End If
     
                Rc.Close()
                x = ""
                '-------------------------
                Fichier = Dir()
            Loop
     
            'Fermeture du fichier Compilation
            Close #1
     
     
     
        End Sub
    Est-ce que quelqu'un pourrait m'aider svp ?
    Épargnez votre cerveau : éteignez votre télé !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ton code ressemble plus à du VB6 qu'à du VB.NET
    En .NET on utilise plus ADODB, mais ADO.NET. Et pour la manipulation de fichiers, il est fortement recommandé d'abandonner les instructions VB6 genre "Open", "Print", etc...

    Sinon, j'ai rien compris à ta question : ça veut dire quoi "compiler des fichiers CSV" ? Compiler, c'est pour du code, pas pour des données...

    Essaie d'expliquer un peu mieux ce que tu cherches à faire...

  3. #3
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Bonjour et merci pour la réponse.

    Quand je dis compiler, j'entends fusionner.
    J'ai un fichier A qui contient:

    donnée1;donnée2;donnée3;
    donnée4;donnée5;donnée6;
    Et un fichier B qui contient:
    donnée7;donnée8;donnée9;
    donnée10;donnée11;donnée12;

    ET je voudrais faire un fichier:

    donnée1;donnée2;donnée3;
    donnée4;donnée5;donnée6;
    donnée7;donnée8;donnée9;
    donnée10;donnée11;donnée12;

    Voilà, j'espère que c'est plus clair...

    et entre VB6 et VB.NET ben j'avoue que je m'emmêle un peu les pédales. C'est pas la même choses? (houuu je vais paraître pour un newbee avec ça mais tant pis!!!)
    Épargnez votre cerveau : éteignez votre télé !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Regarde l'aide concernant :
    System.io.file
    StreamReader et StreamWriter

    Regarde aussi la fonction Split:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Split(
       ByVal Expression As String,
       Optional ByVal Delimiter As String = " ",
       Optional ByVal Limit As Integer = -1,
       Optional ByVal Compare As CompareMethod = CompareMethod.Binary
    ) As String()
    Et il n'y a pas besoin de passer par une base de donnée !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ben là y a même pas besoin de Split... vu que tu ne fais pas de traitement particulier sur les données, il suffit de lire les fichiers ligne par ligne et d'écrire toutes les lignes dans le fichier de sortie

    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
    Using writer As New StreamWriter(outputFile)
     
        For Each inputFile In inputFiles
     
            Using reader As New StreamReader(inputFile)
     
                Dim line As String = reader.ReadLine()
                While line IsNot Nothing
                    writer.WriteLine(line)
                    line = reader.ReadLine()
                End While
     
            End Using
     
        Next
     
    End Using

  6. #6
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Oh lala !!
    Vous pourriez être un peu plus clair ??
    tomlev, tu peux commenter ton code stp ???

    J'ai écris ça :
    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
        Sub Compilation_CSV()
            Dim sFichier As String, sPath As String
     
            sPath = Form_Main.Tb_Path_Compil.Text
     
            sFichier = Dir(sPath & "\*.csv")
            Do While sFichier <> ""
                Try   ' Création d'une instance de StreamReader pour permettre la lecture de notre fichier
                    Dim monStreamReader As StreamReader = New StreamReader(sFichier)
                    Dim monStreamWriter As StreamWriter = New StreamWriter(sPath & "\Compilation.csv")
     
                    Dim ligne As String   'Lecture de toutes les lignes et affichage de chacune sur la page  
                    Do
                        ligne = monStreamReader.ReadLine()
                        monStreamWriter.WriteLine(ligne)
                        '  monStreamWriter.Close()
                    Loop Until ligne Is Nothing
                    'Fermeture du StreamReader (attention très important) 
                    monStreamReader.Close()
                    monStreamWriter.Close()
                Catch ex As Exception  'Code exécuté en cas d'exception  
                    MsgBox(ex.Message)
                End Try
                sFichier = Dir()
            Loop
        End Sub
    Mais le problème, c'est qu'évidement, les données s'écrasent à chaque fichier... Le résultat, c'est que mon fichier Compilation.csv ne contient les données que du dernier fichier qu'il y a dans le répertoire (sPath)

    Il faudrait que je trouve un moyen pour pointer sur la dernière ligne à chaque fichier. C'est possible?

    Merci a vous en tout cas, vous m'aidez énormément !
    Épargnez votre cerveau : éteignez votre télé !

  7. #7
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut
    Faut pas m'en vouloir, je suis fatigué....
    Il suffit de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Dim monStreamWriter As StreamWriter = New StreamWriter(sPath & "\Compilation.csv", True)
    ...

    Bon ben ça fonctionne comme je le souhaitais! Merci à vous en tout cas !
    Je met la balise résolu!
    Épargnez votre cerveau : éteignez votre télé !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/03/2012, 01h30
  2. [VBA] Script pour compiler des fichiers csv
    Par dol75 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/01/2011, 08h25
  3. Convertir un fichier CSV avec l'interop d'Excel - .Net
    Par bliss190 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 29/10/2010, 08h12
  4. Réponses: 4
    Dernier message: 21/09/2009, 22h56
  5. VB.Net - Lecture de fichiers csv
    Par House MD dans le forum VB.NET
    Réponses: 16
    Dernier message: 19/10/2008, 16h56

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