Importer un Fichier Csv dans une table Access
Bonsoir,
Je voudrais utiliser le code qu’a communiqué Marot_r sur ce post :
http://www.developpez.net/forums/d74...s/#post4295774
Lorsque le code passe sur
While Not EOF(1)
EOF(1) et à Vrai et va directement à la ligne
Close #1
Champs de la table Access 2003:
ID
HEURE
NOMA
NOMB
COURT
NATURE
DATE
Sur WordPad les enregistrements de la table importée (Fichier Excel Csv) se présentent de cette façon :
DATE ; HEURE ; NOM ; NOM ; COURT ; NATURE
Samedi 05 Décembre 2009;09h 00;DURAND;;N°7;Adhérent
Nota : ce n’est pas une erreur de ma part le fichier à importer contient deux fois le champ NOM.
Code:
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
| Private Sub Import()
Dim Ligne AS string
Dim HEURE As String
Dim NOM As String
Dim COURT As String
Dim NATURE As String
Dim db As DAO.Database: Set db = CurrentDb
Dim rs As DAO.Recordset: Set rs = db.OpenRecordset("table1")
Open "C:\Documents and Settings\Propriétaire\Mes documents\Bureau\Import\Excel.csv" For Input As #1
Line Input #1, ligne ' pour eviter la premiere ligne
While Not EOF(1)
Line Input #1, ligne
DATE = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(DATE) + 1)))
HEURE = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(HEURE) + 1)))
NOM = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(NOM) + 1)))
NOM = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(NOM) + 1)))
COURT = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(COURT) + 1)))
NATURE = Left(ligne, (len_enreg(ligne)))
ligne = Right(ligne, (Len(ligne) - (Len(NATURE) + 1)))
With rs
.AddNew
![DATE] = DATE
![HEURE] = HEURE
![NOMA] = NOM
![NOMB] = NOM
![COURT] = COURT
![NATURE] = NATURE
.Update
End With
Wend
Close #1
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11
| Private Function len_enreg(ByVal a As String) As Integer ' renvoi la taille de l'enregistrement en cours ( jusque ";")
Dim cpt As Integer
cpt = 1
While Mid(a, cpt, 1) <> ";"
cpt = cpt + 1
Wend
len_enreg = cpt - 1
End Function |
Merci pour votre aide.
Salutations.