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