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

Macros et VBA Excel Discussion :

Import fichier texte dans un recordset depuis Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 77
    Par défaut Import fichier texte dans un recordset depuis Excel
    Bonjour,

    J’ai besoin de récupérer depuis Excel dans un recordset via ADO un fichier texte délimité.
    Le fichier .csv est un fichier délimité par le point virgule et comporte une quarantaine de champ

    Voilà le code que j’utilise :
    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
     
        Dim CnXL                As New ADODB.Connection
        Dim rst                    As New ADODB.Recordset
        Dim strSQL              As String
     
        CnXL = "Driver={Microsoft Text Driver (*.txt; *.csv)};""Dbq=" & NomRepertoire & ";Extensions=asc,csv,tab,txt"
        CnXL.Open
     
        strSQL = "SELECT * FROM [" & NomFichier & "]"
     
        Set rst = CnXL.Execute(strSQL)
     
        rst.MoveFirst
        intLi = rst.Fields.Count
        Do Until rst.EOF
            For i = 0 To intLi - 1
                msgbox rst.Fields(i)
            Next i
            rst.MoveNext
        Loop
    La connexion se fait très bien et je n'ai aucun bug.
    Mais intLi= 10 au lieu de 47 et le premier champ récupère en fait plusieurs champs et les champs suivants s’appellent F2, F3 au lieu d’avoir le bon nom.
    Idem si j'utilise la commande CopyFromRecordset.

    La récupération du fichier fonctionne très bien par la méthode classique de lecture de fichier texte mais je préfère adopter la méthode ADO car demain des champs peuvent être rajoutés en plein milieu du fichier.
    Avec le recordset créé via ADO, je peux traiter mes données comme je veux.

    Merci pour votre aide
    Dominique

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Salut,

    Regarde peut être cette conversation. La chaine de connexion est différente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Dossier & ";Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";Persist Security Info=False"
    http://www.developpez.net/forums/d12...ado-connexion/

    Bon courage

Discussions similaires

  1. [Debutant]Importer Fichier texte dans mémo delphi
    Par Vinceee38 dans le forum Delphi
    Réponses: 3
    Dernier message: 26/04/2007, 14h42
  2. Importer fichier texte dans Table
    Par cjacquel dans le forum Access
    Réponses: 1
    Dernier message: 18/01/2007, 17h07
  3. Importer fichier texte dans base Access
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/08/2006, 20h21
  4. probleme avec un import fichier texte dans mysql
    Par xodeax dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/07/2006, 13h24
  5. import fichier texte dans table contrainte
    Par philippe281281 dans le forum Outils
    Réponses: 5
    Dernier message: 14/06/2006, 17h01

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