Export de données Excel vers Acces par code VBA

Bonjour

J'aimerais savoir si il existe une macro simple pour exporter, supprimer et mettre à jour une base données Access à partir d'un fichier Excel.

Je m'explique :

Il est facile d'importer l'ensemble d'une table access nommée " BDD2 " dans une feuille Excel.

Mais l'inverse est plus compliqué lorsqu'on veut remettre les données modifiées dans la BDD Excel et la macro sur laquelle je travaille est très longue.

Il manque d'autre part la possibilité d'avoir 3 options

"Tout supprimer dans la base Access

"Mettre à jour dans la base Access

"Ajouter dans la base Access

Voici le travail en cours qui fonctionne mais qui est très long, donc à remplacer par une requètes plus simple.

'-----------------

Sub RetourDonnéesVersAccesBDD2AvecFonctionExportGeneriqueV4()

Dim chemin_bd As String 'Chemin de la Base

Dim Societes_Id_Li As String

Dim SSocietes_Nom_Li As String

Dim Societes_Activite_li As String

Dim ligne As String

chemin_bd = ThisWorkbook.Path & "\sortiesRetour.accdb"

For ligne = 9 To 2000

Societes_Id_Li = Cells(ligne, 2).Value

Societes_Nom_Li = Cells(ligne, 3).Value

Societes_Activite_li = Cells(ligne, 4).Value

TransfertExcelVersAccess = ExportGenerique(chemin_bd, "Societes", "Societes_Id", Societes_Id_Li, "Societes_Nom", Societes_Nom_Li, "Societes_Activite", Societes_Activite_li)

ligne = ligne + 1

Next ligne

End Sub 'Fin de RetourDonnéesVersAcces()

Function ExportGenerique(Fichier As String, NomDeTable As String, Colonne_1 As String, Valeur_1 As Variant, Colonne_2 As String, Valeur_2 As Variant, Colonne_3 As String, Valeur_3 As Variant)

Dim MonFichierAccess As Database

Dim MaTableDansAccess As DAO.Recordset

Set MonFichierAccess = OpenDatabase(Fichier)

Set MaTableDansAccess = MonFichierAccess.OpenRecordset(NomDeTable, dbOpenTable)

On Error Resume Next 'Pour ne pas tenir compte des messages d'erreur

MaTableDansAccess.AddNew

MaTableDansAccess.Fields(Colonne_1) = Valeur_1

MaTableDansAccess.Fields(Colonne_2) = Valeur_2

MaTableDansAccess.Fields(Colonne_3) = Valeur_3

MaTableDansAccess.Update 'ligne bogue quand double clé

MaTableDansAccess.Close 'Fermer la Table

MonFichierAccess.Close 'Fermer le fichier

End Function 'Fin de la fonction "ExportGenerique" pour la macro suivante

'-----------------

D'avance merci

Bonjour Bob67

Perso, j'aurais 2 questions :

- pourquoi ne pas lier ton fichier Excel à ta base Access

- Quel intérêt de piloter Access depuis Excel ?

Bonjour Bruno

Merci pour la suggestion de lier avec Access qui semble adaptée à ce sujet pour copier un fichier client global.

Toutefois Excel propose des formules de calcul plus évoluées que Access et je dispose dans Excel de macros capables de traiter des fonctions évoluées que ne propose pas Access, comme les formules d'amortissement, ou l'impression et envoi automatisé par mail de pdf, etc ...

Une fiche client excel ne doit reprendre qu'une ligne spécifique de la table globale des clients ACCESS.

J'ai trouvé par exemple ci dessous un code qui permet de faire l'export Access vers Excel en moins d'un seconde. mais l'inverse (renvoyer les données vers access après modification est plus difficile.

' EXTRAIRE TOUS LES CHAMPS ACCESS POUR LES METTRE DANS EXCEL

Sub extraireTOUT()

Dim chemin_bd As String

Dim ligne As Integer

Dim enr As Recordset

Dim base As Database

chemin_bd = ThisWorkbook.Path & "\BDD.accdb"

ligne = 9 'Première ligne du tableau Excel

'INITIALISATION DE LA BASE DE DONNEES

Set base = DBEngine.OpenDatabase(chemin_bd) 'dans sa globalité

Set enr = base.OpenRecordset("SELECT * FROM societes", dbOpenDynaset)

'RECUPERATION DES INFORMATION DES CHAMPS POUR LES RESTITUER EN ZONE D EXTRACTION

enr.MoveFirst

Do 'On commence par la colonne 2 en recupérant l'info de champ nommé société-1 pour la clé primaire de la table

Cells(ligne, 2).Value = enr.Fields("societes_1").Value

Cells(ligne, 3).Value = enr.Fields("societes_2").Value

Cells(ligne, 4).Value = enr.Fields("societes_3").Value

ligne = ligne + 1

enr.MoveNext

Loop Until enr.EOF = True

End Sub 'extraireTOUT()

Rechercher des sujets similaires à "export donnees acces code vba"