Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

nikkss

XLDnaute Nouveau
Bonjour le forum,

Je crois avoir lu et essayé tout ce que je pouvais pour résoudre mon problème.

Voilà, j'aimerai exporter vers une table ACCESS existante, le contenu d'une feuille EXCEL. Bien sûr le contenu est au format attendu par les champs de la table ACCESS.
J'ai essayé plein de méthodes différentes mais impossible de mettre la main sur une qui fonctionne.
Par contre par ACCESS, j'arrive très facilement via les outils d'importation, à faire ce que je veux. Mais je veux le faire par vba.

Quelqu'un aurait-il déjà manipé de la sorte?

Merci à tous.
 

nikkss

XLDnaute Nouveau
Re : Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

Bonjour,
Afin que cela soit plus clair, voici une des solutions que j'ai essayée sans succès..

Sub ActionsTableAccess()
Dim Cn As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim Requete As String

Set Cn = New ADODB.Connection
Set Rst = New ADODB.Recordset

Cn.Provider = "Microsoft.Jet.Oledb.4.0"
Cn.ConnectionString = Application.GetOpenFileName
Cn.Open

Requete = "DELETE FROM RailEventMessage"
Cn.Execute Requete

On Error GoTo Code_Err
' Créer un objet boite de dialogue d'ouverture de fichier
Set fd = Application.FileDialog(msoFileDialogOpen)
Dim vrtSelectedItem As Variant
' Ouvrir l'objet pour le choix du fichier
With fd
If .Show = -1 Then
VPathFic = .SelectedItems(1)
Else
Exit Sub
End If
End With
Set fd = Nothing
' Lier la feuille Excel à la Bdd Access
DoCmd.TransferSpreadsheet acLink, 8, "Feuil1", VPathFic, True, ""
' Importer les données
NomTbl = "MATABLE" ' Nom de la table dans la Bdd Access
StrSQL1 = "INSERT INTO " & RailEventMessage & "( MesCHampsDeLaTableAccess)"
StrSQL2 = "SELECT * FROM Feuil1;"
DoCmd.RunSQL (StrSQL1 & StrSQL2)
' Supprimer le feuille liée
DoCmd.DeleteObject acTable, "Feuil1"

Code_Exit:
Exit Sub
Code_Err:
MsgBox Error$
Resume Code_Exit

Cn.Close
Set Cn = Nothing
End Sub

Merci pour votre aide :)
 

Herdet

Nous a quitté
Repose en paix
Re : Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

Salut à tous,

Je suis vraiment bloqué sur cet aspect depuis des jours, qqun aurait il une petite idée?
:confused:
Bonjour,
Rechercher ("écriture dans une base access à partir d'excel") avec ton moteur préféré

Entre autres solutions possibles :
- Formation Excel VBA JB
classeur et base à télécharger : jb-excelaccess.zip
dans le site de JB, rechercher "access" et voir pas mal de codes VBA Excel-Access

- Question posée en 2005 sur Alimenter une table ACCESS avec Excel : Forum Excel et réponse de JB

- Solution d'Eric Renaud : Echanges de données entre Excel et Access
- etc....

Cordialement
Robert
 

Pièces jointes

  • jb-excelaccess.zip
    68.5 KB · Affichages: 87
  • jb-excelaccess.zip
    68.5 KB · Affichages: 101
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

Bonjour,
Après relecture de ton code et si j'ai bien compris, tu cherches à transférer d'un coup une table Excel dans une table Access...
Une solution manuelle à automatiser en VBA :
Voir Importer une feuille Excel dans Access - Le Grenier Access
Lancer l'enregistreur de macro Excel, appliquer la méthode proposée et ensuite nettoyer le code et l'adapter

Autre discussion intéressante et sûrement la plus simple sur
Comment importer une feuille Excel dans une table Access existante? [Résolu]
puis en passant par un CSV créé par macro Excel : FAQ Excel
sur le 1er lien de developpez.net voir aussi ce que propose ac264
"Finalement, j'ai trouvé une autre alternative.
J'ai créé dans Access une table liée à ma feuille excel.
Et dans VBA Excel, je lui donne le code SQL : INSERT INTO pour qu'il me colle ma table liée sur une autre table sans lien"

A+
Robert
 
Dernière édition:

nikkss

XLDnaute Nouveau
Re : Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

Bonjour à tous,
Merci Herdet pour ces informations. J'ai repris un code dans les liens que tu m'as fournis.
Problème, la requête "SELECT * INTO maTable IN maBase FROM MonFicCSV" me fournit l'erreur suivante: "Table déjà existante".
Effectivement, je vide une table existante pour la remplir avec les données CSV. Elle est donc bien existante. Dois-je utiliser une autre requête? Voici mon code:

Sub tranfertCSV_Vers_TableAccess()
'Transfére le fichier CSV vers maTable
'

Dim AccessCn As ADODB.Connection
Dim AccessRst As ADODB.Recordset
Dim Csv_CN As New ADODB.Connection
Dim Csv_Rst As New ADODB.Recordset
Dim DossierCSV As String, NomTable As String
Dim FichCSV As String, MaBase As String
Dim nbEnr As Long
Dim Requete As String

Set AccessCn = New ADODB.Connection
Set AccessRst = New ADODB.Recordset

AccessCn.Provider = "Microsoft.Jet.Oledb.4.0"
AccessCn.ConnectionString = Application.GetOpenFileName
AccessCn.Open

Requete = "DELETE FROM maTable"
AccessCn.Execute Requete


'Répertoire du fichier CSV
DossierCSV = ThisWorkbook.Path
'Nom du fichier CSV à transfèrer
FichCSV = "monFic.csv"
'Chemin et nom de la base Access
MaBase = "Test.mdb"
'Nom de la Table Access
NomTable = "maTable"


'Connection au fichier CSV
Csv_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
DossierCSV & ";Extended Properties='text;FMT=Delimited'"
'Requète dans le fichier CSV
Csv_Rst.Open "SELECT * FROM " & FichCSV, Csv_CN, _
adOpenStatic, adLockOptimistic

'Connection à la base de données Access
Set AccessCn = New ADODB.Connection
AccessCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & MaBase

Csv_CN.Execute "SELECT * INTO [" & NomTable & "] IN '" & _
MaBase & "' From [" & FichCSV & "]", nbEnr


AccessCn.Close
Csv_Rst.Close
Csv_CN.Close
Set AccessRst = Nothing
Set AccessCn = Nothing
Set Csv_Rst = Nothing
Set Csv_CN = Nothing
End Sub

Qqun aurait-il une idée?

Merci pour votre aide.
 

nikkss

XLDnaute Nouveau
Re : Exporter le contenu d'une feuille EXCEL vers une table d'une BDD ACCESS

Salut à tous,

Bon j'ai finalement opté pour charger une feuille EXCEL. Ca fonctionne en manuel sous access. Pas de soucis de types de données, de séparateur etc.

J'ai lancé l'assistant macro sous access, voici la commande que cela me fournit:

DoCmd.TransferSpreadsheet acImport, 10, "MaTable", "MonFichier.xlsb", True, ""

Cette commande fonctionne bien sous access, mais mon problème est de la faire fonctionner par ma macro vba sous Excel. Et la ça ne marche plus.. Vba ne connait pas "DoCmd.TransferSpreadsheet "

Merci pour votre aide. :)
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400