Importer CSV dans une table Access

Résolu
pokeswell Messages postés 5 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 11 janvier 2008 - 29 mars 2006 à 04:57
pokeswell Messages postés 5 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 11 janvier 2008 - 2 avril 2006 à 00:07
Bonjour à tous. J'ai une base de donnée Access dans laquelle j'ai une table avec des clients et les transactions qui leurs sont associées selon une date de l'année.

Par exemple

NoClient
Transactions
Date

J'aimerais construire un programme en VB6 de maniere à pouvoir importer les nouvelles transactions dans la table à mesure que je les recois...

Voici un exemple du fichier source de donnée:

numéro du client|Transaction|Date­
3031123365|44|2/1/2006 12:00:00 AM

puisque mon fichier m'arrive quotidiennement et qu'il contient environ 2000 lignes j'aimerais pouvoir ajouter les lignes du fichier CSV à ma base de données.

La question est donc: Comment faire pour "Appender" à la table Access les lignes provenant du fichier CSV directement sans passer par Excel...(de maniere à pouvoir automatiser totalement le processus)? AIDEZ MOI SVP!!!

5 réponses

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
29 mars 2006 à 09:32
Pour importer un fichier csv (ou un autre type de fichier texte), on dispose des fonctions de lecture et écriture de fichier dans VB et VBA (ce sont les mêmes). Pour le cas présent, je suppose que le trait vertical est le séparateur de champs et que les données ne sont pas entourées de doubles cotes.

Sub ImportCSV(sFileCSV As String, sTable As String)
Dim lFileCSV As Long, sLine As String, rsTable As Recordset
Dim sField As String, n As Integer, m As Long
lFileCSV=FreeFile
Open sFileCSV For Input As #lFileCSV
Set rsTable=CurrenDB.OpenRecordset(sTable, dbOpenTable)
Do
Line Input #lFileCSV, sLine
rsTable.AddNew
For n=1 To Len(sLine)
If Mid(sLine, n, 1)<>"|" Then
sField=sField & Mid(sLine, n, 1)
Else
rsTable(m)=sField
sField=""
m=m+1
End If
If n=Len(sLine) Then
rsTable(m)=sField
sField=""
m=0
End If
Next n
rsTable.Update
Loop Until EOF(lFileCSV)
Close #lFileCSV
rsTable.Close
End Sub
3