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 en manuel ou en VBA.
- Macros Access (ou : « comment exécuter une macro Access à partir d’Excel, par exemple »).
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) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub VidageTableAccess1() Dim acApp As New Access.Application ' Démarrer Access Set acApp = New Access.Application ' Ouvrir la base de données concernée acApp.OpenCurrentDatabase ("C:...MaBase.accdb") ' Exécuter l'instruction SQL acApp.DoCmd.RunSQL "DELETE * FROM [Nom de la table];" ' Quitter Access acApp.Quit Set acApp = Nothing MsgBox "Suppression terminée !", vbInformation End Sub |
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…
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 :
- 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).
- Utilisez le code qui suit (à recopier dans un module standard de votre projet Excel) :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub VidageTableAccess2() Dim db As DAO.Database ' Ouvrir la base de données Set db = OpenDatabase("C:...MaBase.accdb") ' Vider la table db.Execute "DELETE * FROM [Nom de la table];" ' On termine ! Set db = Nothing MsgBox "Suppression terminée !", vbInformation End Sub |
Tester le code
Pour tester ces deux procédures, dans Excel :
- Placez votre curseur clignotant quelque part dans le corps de la procédure concernée (entre le
Sub
et leEnd Sub
). - Cliquez sur l’icône Exécuter Sub/UserForm (le triangle vert en haut de votre écran).
mel > Le Cookbook est épuisé (mais il est peut-être trouvable en occasion sur le Web).
Merci hervé, par rapport au livre comment peut-on en avoir ? Encore une fois merci pour tous
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.
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).Avez vous un exemple de base access gérant une ecole. Si oui ou peut on le telecharger ?
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.
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 ?
Hervé, comment limité le nombre d’enregistrement dans une table ?
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.
Merci hervé, ya t-il une possibilité d’importer une feuille excel à travers un bouton de commande basé sur un formulaire (menu) ?
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