Importer 100 fichiers csv dans 1 table Access

Fermé
grodolpho Messages postés 4 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012 - 22 août 2012 à 16:24
grodolpho Messages postés 4 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012 - 23 août 2012 à 18:59
Bonjour à tous,

Je cherche à importer des fichiers csv vers une table access. j'ai le code pour faire d'excel xls vers access il marche tres bien mais je ne sais pas du tout comment l utiliser le csv,

Auriez vous une piste, je me casse la tête depuis tout à l'heure mais je ne trouve pas la réponse.

Ci dessous les lignes trouvées et fonctionnelles pour mon cas.

Merci beaucoup de votre retour.


Sub tranfertFeuilleClasseursFermes_VersAccess_V02()
'Nécessite d'activer la référence Microsoft ActiveX Data Objects x.x Library
'Nécessite d'activer la référence Microsoft ADO ext x.x for DLL and Security
'
Dim Cn As New ADODB.Connection
Dim oProdRS As New ADODB.Recordset, oRS As ADODB.Recordset
Dim oConn As ADODB.Connection
Dim j As Integer
Dim Fichier As String, Repertoire As String, Feuille As String
Dim oCat As ADOX.Catalog

'------------------------------------------------------
'Connection à la Base Access
Set oConn = New ADODB.Connection
oConn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source= 'C:\Documents and Settings\RC1194\Desktop\Test appli\maBase.mdb';"

'les données seront placés dans Table1
Set oRS = New ADODB.Recordset
oRS.Open "Select * from Table1", oConn, adOpenKeyset, adLockOptimistic
'------------------------------------------------------

'Boucle sur les classeurs Excel du répertoire cible
Repertoire = "C:\Documents and Settings\RC1194\Desktop\Test appli\sauvegarde\"
Fichier = Dir(Repertoire & "\*.xls")

Do While Fichier <> ""
'Connection au classeur Excel
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & "\" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;"""


'-------------------------
Set oCat = New ADOX.Catalog
Set oCat.ActiveConnection = Cn
'Récupére le nom de la Feuille:
'Attention: l'index correspond à un ordre alphabétique croissant
'et les plages de cellules nommées sont intégrées.
Feuille = oCat.Tables(0).Name
'-------------------------


'requête pour extraire les données de la Feuil1
oProdRS.Open "SELECT * FROM [" & Feuille & "]", Cn, adOpenStatic

' --- Transfert les données dans la base ---
Do While Not (oProdRS.EOF)
oRS.addNew
For j = 0 To oRS.Fields.Count - 1
oRS.Fields(j) = oProdRS.Fields(j).Value
Next j
oRS.Update
oProdRS.moveNext
Loop
'-------------------------------------------


Set oCat = Nothing
oProdRS.Close
'Fermeture de la connection au classeur Excel
Cn.Close
Fichier = Dir
Loop

'oRS.Close
Set oRS = Nothing
'Fermeture de la connection Access
oConn.Close
Set oConn = Nothing
End Sub
A voir également:

4 réponses

Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
22 août 2012 à 16:41
Tu peux importer des données de fichier csv, excel a partir d'access (au moins la version 2007)

regarde de ce coté ! :)
0
grodolpho Messages postés 4 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012
22 août 2012 à 17:08
Bonjour Freedomsoul,

Je sais que je peux faire via données, a partir de fichier text etc

mais pour mon code present ci dessus, il faut que je change un élément mais je ne sais pas lequel..
0
grodolpho Messages postés 4 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012
22 août 2012 à 17:24
en faite je pense que c est cette partie qu'il faut que je modifie pour que je puisse automatiser mes stats, je suis bloqué car tous les fichiers csv et txt je dois les remplacer en xls pour que ca marche..


Do While Fichier <> ""
'Connection au classeur Excel
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & "\" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;"""
0
grodolpho Messages postés 4 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 23 août 2012
23 août 2012 à 18:59
Bonjour à tous

Personne n'aurait une idée ?

merci d'avance anthooooony
0