Bonjour,
J'ai trouvé sur le super site de Jacques Boisgontier un code
qui permet d'importer dans une base access des données présentes dans un fichier excel.

Ce code fonctionne si la base access et le fichier excel se trouvent dans le même répertoire et si dans VB il a été coché dans outil/ préférence "Microsoft DAO 3.6"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub ExporterAccessDAO()
  'cocher Microsoft DAO 3.6 dans Outils/Références
  Dim bd As DAO.Database
  ChDir ActiveWorkbook.Path
  Set bd = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
  bd.Execute "DELETE FROM clients IN '" & ActiveWorkbook.Path & "\access2000.mdb'"
  Sql = "INSERT INTO client IN '" & ActiveWorkbook.Path & "\access2000.mdb' SELECT * FROM [Mabd]"
  bd.Execute Sql
  bd.Close
  Set bd = Nothing
End Sub
Dans ce code sont écrits en dur le nom de la base "access2000.mdb"et celui de la table "Clients" dans laquelle sont importées les données du fichier excel.

Pour rendre plus souple ce code, j'ai crée dans le fichier excel un onglet parametres.
Dans ce dernier, j'ai nommé une cellule "chemin" qui retourne l'emplacement de la base "C:/..." et une autre "NomBaseAccess" qui retourne le nom de la base access concernée par exemple "MaBase".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub ExporterAccessDAO()
  'cocher Microsoft DAO 3.6 dans Outils/Références
  Dim bd As DAO.Database
  ChDir ([chemin])
  Set bd = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
  bd.Execute "DELETE FROM clients  IN '" & [chemin] & "\" & [NomBaseAccess] & ".mdb '"
  Sql = "INSERT INTO clients IN '" & [chemin] & "\" & [NomBaseAccess] & ".mdb ' SELECT * FROM [Mabd]"
  bd.Execute Sql
  bd.Close
  Set bd = Nothing
End Sub

j'ai voulu aller plus loin et nommer dans le ficher excel une cellule "Table1" pour retourner le nom de la table access pour remplacer le nom "clients" dans le code de base.

Dans la ligne de code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"bd.Execute "DELETE FROM clients  IN '" & [chemin] & "\" & [NomBaseAccess] & ".mdb '""
J'ai essayé plusieurs synthaxes pour remplacer "clients" par "Table1", mais toutes ont fait échouer l'action.

Espérant avoir été clair sur l'explication de mon problème.
D'avance merci pour votre aide.
Cdt
Georges