Vider une table Access à partir d’Excel

Tout est dans le titre ! A part que l’opération doit se faire en VBA…
Cet article est une réponse à une question posée par un lecteur du blog.

D’autres articles à lire

D’autres articles du Grenier donnent déjà des éléments de réponse :

Vider une table à partir d’Excel – Méthode 1

Une première méthode consisterait à adapter le principe de l’article Macros Access. Ce n’est sans doute pas la plus efficace ici, mais ça peut donner des idées pour d’autres scénarios. Voici le code VBA, à recopier dans un module VBA de votre classeur Excel (on est bien dans Excel, cette fois) :

La procédure démarre Access, y ouvre une base de données, et exécute une instruction SQL pour vider la table. Vous pourriez, sur la même base, exécuter du code VBA Access, ou une macro Access. D’une manière générale, piloter toute la base Access…

Important
Pour que ceci fonctionne, je suppose que vous avez créé, dans votre projet Excel, une référence vers la bibliothèque Microsoft Access x.y Object Library, où x.y est la version d’Access (14.0 pour Access 2010, par exemple). Pour plus de détails, consultez la page Références.

Vider une table à partir d’Excel – Méthode 2

En y regardant bien, on n’a pas besoin de démarrer Access (l’application) pour faire tout ça : il suffit d’avoir un accès à la base de données (le fichier). Il est effectivement plus efficace de travailler sur les données pures. Pour cela :

  1. Commencez par faire une référence à la bibliothèque « Microsoft DAO 3.6 Object Library » (si vous souhaitez ouvrir une base MDB) ou « Microsoft Office x.y Access Database Engine Object Library » (si vous souhaitez ouvrir une base ACCDB).
  2. Utilisez le code qui suit (à recopier dans un module standard de votre projet Excel) :

Tester le code

Pour tester ces deux procédures, dans Excel :

  1. Placez votre curseur clignotant quelque part dans le corps de la procédure concernée (entre le Sub et le End Sub).
  2. Cliquez sur l’icône Exécuter Sub/UserForm (le triangle vert en haut de votre écran).

Vous aimerez aussi...

11 réponses

  1. Hervé Inisan dit :

    mel > Le Cookbook est épuisé (mais il est peut-être trouvable en occasion sur le Web).

  2. mel dit :

    Merci hervé, par rapport au livre comment peut-on en avoir ? Encore une fois merci pour tous

  3. Hervé Inisan dit :

    mel > Le chapitre 2 du Access Cookbook donne un exemple simplifié de gestion de classes, d’élèves et de notes. Il peut être téléchargé à cette adresse. Mais ce ne sera peut-être pas exploitable facilement sans le livre.

  4. Hervé Inisan dit :

    mel > Quelque chose comme ceci :

    … devrait faire l’affaire. A placer dans l’événement Avant MAJ du formulaire de saisie d’élèves. Et à adapter bien sûr (dans mon exemple, je teste la classe numéro 7 uniquement).

  5. mel dit :

    Avez vous un exemple de base access gérant une ecole. Si oui ou peut on le telecharger ?

  6. mel dit :

    Je fais un projet de gestions des scolairité d’un complexe dont le nombres d’eleves est limité à 30 eleves par classe, je voudrais me servir de quelque chose pour que si le nombre atteint dans une classe, un msg apparait pour informer que l’ajout n’est possible.

  7. Hervé Inisan dit :

    mel > A vue de nez, c’est quelque chose qui ne devrait pas servir souvent. L’intérêt d’une table est justement de stocker des données « extensibles ». Ou alors, c’est que la table n’est pas utilisée de la bonne manière. 😉

    Maintenant, je n’ai pas forcément toute l’info sur ton projet : quel est l’objectif précis ?

  8. mel dit :

    Hervé, comment limité le nombre d’enregistrement dans une table ?

  9. Hervé Inisan dit :

    mel > Il y a toute une série d’articles récents dans le Grenier, qui décrivent comme importer des données CSV ou Excel dans une table Access. Tu les trouveras dans cette liste.

  10. mel dit :

    Merci hervé, ya t-il une possibilité d’importer une feuille excel à travers un bouton de commande basé sur un formulaire (menu) ?

  11. mel dit :

    Merci herve, comment importer une feuille excel dans une table en vba (pouvez-vous appeler cette procedure par un bouton de commane d’un formulaire) Merci d’avance

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *