Importer 100 fichiers csv dans 1 table Access
grodolpho
Messages postés
4
Statut
Membre
-
grodolpho Messages postés 4 Statut Membre -
grodolpho Messages postés 4 Statut Membre -
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
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:
- Importer 100 fichiers csv dans 1 table Access
- Table ascii - Guide
- Table des matières word - Guide
- Importer favoris chrome - Guide
- Renommer des fichiers en masse - Guide
- Dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. - Guide
4 réponses
Tu peux importer des données de fichier csv, excel a partir d'access (au moins la version 2007)
regarde de ce coté ! :)
regarde de ce coté ! :)
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..
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..
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;"""
Do While Fichier <> ""
'Connection au classeur Excel
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & "\" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;"""