Extraire données d'un CSV par vba excel [Résolu]

Tradman

XLDnaute Nouveau
Bonjour à tous,

Je voudrais simplement extraire des données d'un fichier .csv sans ouvrir ce dernier en excel car il contient plus de 1,5 millions de ligne.

J'ai déjà trouvé une partie de code que j'ai tenté d'adapter mais comme je ne suis pas super habile avec les recordset, j'ai du mal à comprende ce qui bug dans mon extraction.

Comme info de base, je souligne que mes champs sont délimité par des virgules dans mon .csv et qu'il est possible et même fort probable d'avoir des champs vide.

Voici le bout de code que j'ai un peu adapté

Private Sub cbExecuter_Click()

'Définir les variables
Dim Cn As ADODB.Connection
Dim strFichier, strFeuille, strSQL, strDossier As String
Dim intTest As Integer
Dim rsDonnees As ADODB.Recordset
Dim wbFichier As Workbook
Dim wsDonnees As Worksheet
Dim rgDonnees As Range

Set wbFichier = ActiveWorkbook
Set wsDonnees = wbFichier.Sheets("Données")
Set rgDonnees = wsDonnees.Range("A1")

wbFichier.Activate
wsDonnees.Cells.Clear

strDossier = "D:\Test\"
strFichier = "Test.csv"

Set Cn = New ADODB.Connection
Cn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & strDossier & ";Extended properties=""text;HDR=Yes;FMT=Delimited(,)"";Persist Security Info=False"
Cn.ConnectionTimeout = 40
Cn.Open

strSQL = "Select * from " & strFichier

Set rsDonnees = New ADODB.Recordset
rsDonnees.ActiveConnection = Cn
rsDonnees.Source = strSQL
rsDonnees.Open

i = 2
If rsDonnees.EOF <> True Then
While rsDonnees.EOF = False
strSupport = rsDonnees.Fields(3).Value
i = i + 1
rsDonnees.MoveNext
Wend
End If
rsDonnees.Close
Set rsDonnees = Nothing
Cn.Close
Set Cn = Nothing

End Sub

Présentement, quand j'exécute ce fichier, il me renvoit l'erreur #3265 Impossible de trouver l'objet dans la collection correspondant au nom ou à la référence ordinale demandé pour la ligne strSupport = rsDonnees.Fields(3).Value

MErci beaucoup de votre aide afin de me rendre meilleur pour jouer avec les recordsets dans vba !!!!!

Tradman
 
Dernière édition:

Discussions similaires