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 :

Exportation RecordSet vers un fichier .CSV [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Par défaut Exportation RecordSet vers un fichier .CSV
    Bonjour,

    Je découvre le Visual Basic (d'ailleurs je suis perdu en VB.NET, VBA, VB6 ! Si vous pouviez m'éclaircir se point) et j'ai un projet professionnel, je dois faire l'exportation du contenu d'une table Access vers un fichier csv.

    J'ai donc fait la connexion avec ADODB, je fais mon RecordSet et je voudrais donc transmettre le résultat sous .CSV.

    J'ai fait des recherches, et j'ai pu voir que certains créer un fichier texte avec le délimiteur puis créer le fichier CSV

    Je sais aussi qu'il faut utilisé la fonction DoCmd.TransferText, je suis donc vraiment pas loin, mais je sèche, je ne sais pas quoi faire entre mon RecordSet et la fonction.

    Convertir en tableau ? Créer un fichier texte intermédiaire ? Le parcourir ?

    Voici mon code actuel :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Sub Export_CSV()
     
        Ouverture_Connexion_BDD
     
        If Connexion Then
     
            ' Déclaration de la variable contenant le répertoire d'enregistrement
            Dim Chemin As String
     
            ' Execution de la requête
            req.Open "select * from TB_REF_CONV;", cnx
     
            With req
     
                If .EOF Then
                    MsgBox "La table <Param1> ne contient aucune donnée.", vbExclamation, "Erreur de traitement"
                Else
                    Chemin = ChoixDossier
     
                        'La totalité des entrées présentes dans la table est exportée (sans être supprimée de la table) dans le fichier.
                        'Si une erreur survient lors de l'export
                            'Le message d'erreur est affiché dans un pop-up et l'utilisateur est prévenu que le traitement est interrompu.
     
                        'Do
                           ' MsgBox req("Devise")
                           ' .MoveNext
                        'Loop While Not .EOF
     
     
     
                        ' DoCmd.TransferText acExportDelim, "Export_CSV", req, "C:\April.csv", True
     
                        'DoCmd.TransferText acExportDelim, , req.Record, "C:\April.csv"
     
                        MsgBox "L'export s'est terminé avec succès.", vbInformation, "Opération réussie"
     
                    Else
                        MsgBox "Traitement de l'exportation interrompu.", vbExclamation, "Erreur de traitement"
     
                    End If
     
                End If
     
            End With
     
            req.Close
            Set req = Nothing
     
     
            Fermeture_Connexion_BDD
     
     
        End If
     
    End Sub
    La procédure Ouverture_connexion_BDD fonctionne parfaitement ainsi que la fonction ChoixDossier qui retourne bien sous forme de string le choix du répertoire sous lequel faire l'enregistrement du CSV.

    Ma requête fonctionne, donc que dois-je faire désormais ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198

  3. #3
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Par défaut
    Loin de moi ne pas vouloir comprendre, mais il y a des choses qui m'échappe comme

    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
    Sub ExportCSV()
     
    Dim Fd As FileDialog
    Dim strChaine As String
     
    Dim Plage As Range
     
    Dim Ligne As Long
    Dim Colonne As Integer
     
    'Fenêtre de choix d'emplacement et nom du fichier en sortie
    Set Fd = Application.FileDialog(msoFileDialogSaveAs)
     
    'Ajout du filtre
    Fd.FilterIndex = 10
     
    'Sortie si pas de fichier
    If Fd.Show = False Then Exit Sub
     
    'Plage a trasformer en CSV
    Set Plage = Selection
     
    'Ouverture du fichier de sortie
    Open Fd.SelectedItems(1) For Output As #1
     
    'Boucle sur la plage et ajoute les lignes au fichier
    For Ligne = 1 To Plage.Rows.Count
        For Colonne = 1 To Plage.Columns.Count
            If strChaine <> "" Then strChaine = strChaine & ";"
            strChaine = strChaine & Plage.Cells(Ligne, Colonne).Value
        Next Colonne
        Print #1, strChaine
        strChaine = ""
    Next Ligne
     
    'Fermeture du fichier
    Close #1
     
    MsgBox "Fichier : " & Fd.SelectedItems(1) & " disponible"
     
    End Sub
    Set Plage = Selection, la variable selection elle sort de nul part ...

  4. #4
    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 : 44
    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
    Par défaut
    Citation Envoyé par V1p34r Voir le message
    d'ailleurs je suis perdu en VB.NET, VBA, VB6 ! Si vous pouviez m'éclaircir se point
    VB6 ça a 15 ans, c'est obsolète (il y a encore des gens qui l'utilisent, mais c'est essentiellement pour maintenir des applications qui avaient été développées dans ce langage)

    VBA, c'est Visual Basic pour Applications ; c'est ce qui permet de coder des macros dans Office. C'est très similaire à VB6

    VB.NET, sorti il y a un peu plus de 10 ans, est le successeur de VB6. C'est une version de VB un peu modifiée pour fonctionner avec le .NET Framework (également utilisé par d'autres langages comme C#)

    Aujourd'hui ça n'a plus vraiment de sens d'utiliser VB6 pour une nouvelle application, il faut utiliser VB.NET. A la rigueur, tu peux utiliser VBA si tu veux coder ton truc directement dans Access ou Excel, mais ce n'est pas le même langage.

    Citation Envoyé par V1p34r Voir le message
    J'ai donc fait la connexion avec ADODB, je fais mon RecordSet et je voudrais donc transmettre le résultat sous .CSV.
    Normalement en VB.NET on n'utilise plus ADODB, mais ADO.NET. Voir ces tutos pour plus de détails :
    http://dotnet.developpez.com/articles/ado1/vbnet/
    http://plasserre.developpez.com/cour...nnees1#LXVII-B

    (ADODB reste disponible pour permettre la compatibilité du code existant, mais il n'est plus recommandé de l'utiliser)

  5. #5
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Par défaut
    Donc grâce a ton explication, je suis donc sous VBA, je vais faire une recherche ADO.NET quand même.

    Mais pour ce qui est de la créer du fichier .CSV, personne pour m'éclairer ?

  6. #6
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Par défaut
    Bn en faite s'était très con et je me sens con également, voici la solution pour ceux qui tomberont sur mon sujet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' Création du fichier et de son contenu
                        Open chemin For Output As #1
     
                            Do
                                ligneCSV = req("Id_Conv") + ";" + req("Devise") + ";" + CStr(req("Euro")) + ";" + CStr(req("USD"))
                                Print #1, ligneCSV
                                req.MoveNext
                            Loop While Not req.EOF
     
                        Close

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

Discussions similaires

  1. Exporter requête vers un fichier *.csv
    Par cédoula dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 14/01/2008, 17h37
  2. [ODBC] problème d'export du contenu de <textarea> vers un fichier csv
    Par maraly dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 27/04/2007, 09h14
  3. [Macro]exporter une table vers un fichier.csv
    Par samca dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2007, 21h25
  4. Exporter Recordset vers fichier texte
    Par aures64 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/11/2006, 02h25
  5. [Oracle] export vers un fichier csv
    Par illegalsene dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/10/2005, 23h58

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