OVH Cloud OVH Cloud

exportation excel vers access

3 réponses
Avatar
jacques
Bonjour =E0 vous tous.

J'ai un fichier excel qui porte le nom=20
"C:\Mes documents\caisse pop access.xls"=20
j'aimerais exporter par une macro ce ficher=20
dans une base de donn=E9e access.

Cette base de donn=E9e porte le nom=20
"C:\Mes documents\base de donn=E9e\caisse pop.mdb=20

Le nom de la table qui doit recevoir le fichier excel=20
porte le nom : caisse populaire.

Avec les assistants je suis capable d'exporter le fichier=20
et tout fonctionne bien. Je cherche donc le code qui va me=20
permettre de faire le transfert du fichier de fa=E7on=20
automatique.

Merci.

3 réponses

Avatar
Denis Michon
Bonjour Jacques,


Voici un exemple de Macro qui est écris dans un module standard d'excel et qui va copier les données de la feuille
active vers une base de données .mdb. À la lecture du code tu comprendras qu'il faut modifier, le nom des objets(chemin,
nom de la base de données, le nom des champs de ta table de données....etc..) par le vrai nom des choses de ton projet.

Tu dois ajouter la bibliothèque "Microsoft Activex Data Objects 2.0 librairy" à ton projet excel.

Attention, Access est très susceptible... si le type de données d'un champ de ton tableau d'excel ne correspond pas au
type de données du champ que tu as défini dans ta table access, ou, si dans ta table access, il est défini qu'un champ
spécifique ne peut être vide... son champ équivalent de la table excel ne peut être vide sinon... access va s'étouffer
!!! ... (plantage assuré !)

'---------------------
Sub ADOFromExcelToAccess()

Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:FolderNameDataBaseName.mdb;"
' open a recordset

Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table

r = 3 ' the start row in the worksheet

Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
'---------------------



Salutations!




"jacques" a écrit dans le message de
news:015901c3ae05$48484070$
Bonjour à vous tous.

J'ai un fichier excel qui porte le nom
"C:Mes documentscaisse pop access.xls"
j'aimerais exporter par une macro ce ficher
dans une base de donnée access.

Cette base de donnée porte le nom
"C:Mes documentsbase de donnéecaisse pop.mdb

Le nom de la table qui doit recevoir le fichier excel
porte le nom : caisse populaire.

Avec les assistants je suis capable d'exporter le fichier
et tout fonctionne bien. Je cherche donc le code qui va me
permettre de faire le transfert du fichier de façon
automatique.

Merci.
Avatar
jacques
J'ai inscrit le code suivant et à la première
ligne elle me donne un erreur de compilation
type non défini

Sub trancpop()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As
Long
' connect to the Access database

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:Mes documentsbase de
donnéecaisse pop.mdb;"
' open a recordset

Set rs = New ADODB.Recordset
rs.Open "caisse populaire", cn, adOpenKeyset,
adLockOptimistic, adCmdTable
' all records in a table

r = 3 ' the start row in the worksheet

Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("datjr") = Range("A" & r).Value
.Fields("datcp") = Range("B" & r).Value
.Fields("descp") = Range("C" & r).Value
.Fields("nochcp") = Range("d" & r).Value
.Fields("dtcp") = Range("e" & r).Value
.Fields("ctcp") = Range("f" & r).Value



' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Avatar
Denis Michon
Bonjour Jacques,

Tu as bien lu le texte de ma réponse :

Tu dois ajouter la bibliothèque "Microsoft Activex Data Objects 2.0 librairy" à ton projet excel.

L'as-tu fait ?


Salutations!



"jacques" a écrit dans le message de
news:038b01c3ae1a$13302190$
J'ai inscrit le code suivant et à la première
ligne elle me donne un erreur de compilation
type non défini

Sub trancpop()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As
Long
' connect to the Access database

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:Mes documentsbase de
donnéecaisse pop.mdb;"
' open a recordset

Set rs = New ADODB.Recordset
rs.Open "caisse populaire", cn, adOpenKeyset,
adLockOptimistic, adCmdTable
' all records in a table

r = 3 ' the start row in the worksheet

Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("datjr") = Range("A" & r).Value
.Fields("datcp") = Range("B" & r).Value
.Fields("descp") = Range("C" & r).Value
.Fields("nochcp") = Range("d" & r).Value
.Fields("dtcp") = Range("e" & r).Value
.Fields("ctcp") = Range("f" & r).Value



' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub