Skip to content
Learni
View all tutorials
Automatisation

Comment automatiser Microsoft Access avec VBA en 2026

14 minBEGINNER

Introduction

Le VBA (Visual Basic for Applications) permet d'automatiser Microsoft Access pour gagner un temps précieux. Que vous souhaitiez créer des rapports automatiques, valider des données ou générer des formulaires dynamiques, le VBA est l'outil idéal. Ce tutoriel vous accompagne depuis les bases jusqu'à vos premiers scripts fonctionnels. Vous découvrirez comment écrire du code propre, structuré et réutilisable. L'objectif est de transformer vos tâches manuelles répétitives en processus automatisés fiables.

Prérequis

  • Microsoft Access 2016 ou version ultérieure installé
  • Connaissances de base d'Access (tables, formulaires, requêtes)
  • Ordinateur Windows
  • Option Développeur activée dans Access

Activer l'éditeur VBA

Module1.bas
Sub PremierPas()
    MsgBox "Bienvenue dans le monde du VBA Access !"
End Sub

Ce premier module affiche une boîte de message simple. Ouvrez l'éditeur VBA avec Alt + F11 puis collez ce code dans un module standard pour le tester immédiatement.

Comprendre la structure d'un module

Un module contient des procédures (Sub) et des fonctions. Chaque procédure commence par Sub et se termine par End Sub. Utilisez des noms explicites pour vos macros afin de faciliter la maintenance future.

Créer une table via VBA

ModuleCreationTable.bas
Sub CreerTableClients()
    Dim db As DAO.Database
    Dim tbl As DAO.TableDef
    Set db = CurrentDb
    Set tbl = db.CreateTableDef("Clients")
    With tbl
        .Fields.Append .CreateField("ID", dbLong)
        .Fields.Append .CreateField("Nom", dbText, 50)
        .Fields.Append .CreateField("Email", dbText, 100)
    End With
    db.TableDefs.Append tbl
    MsgBox "Table Clients créée avec succès."
End Sub

Ce code crée une table Clients avec trois champs. Il utilise l'objet DAO pour manipuler la structure de la base de données directement depuis VBA.

Ajouter des enregistrements

ModuleAjoutDonnees.bas
Sub AjouterClient()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Clients", dbOpenDynaset)
    With rs
        .AddNew
        !Nom = "Dupont"
        !Email = "dupont@email.com"
        .Update
    End With
    rs.Close
    MsgBox "Client ajouté."
End Sub

Cette procédure insère un nouvel enregistrement dans la table Clients. Utilisez toujours .AddNew et .Update pour garantir l'intégrité des données.

Automatiser un formulaire

ModuleFormulaire.bas
Sub RemplirFormulaire()
    Dim frm As Form
    Set frm = Forms!frmClients
    frm!txtNom = "Martin"
    frm!txtEmail = "martin@email.com"
    MsgBox "Formulaire mis à jour."
End Sub

Ce code modifie les contrôles d'un formulaire ouvert. Assurez-vous que le formulaire est ouvert avant d'exécuter la macro pour éviter les erreurs.

Exporter vers Excel

ModuleExport.bas
Sub ExporterVersExcel()
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Set db = CurrentDb
    Set qdf = db.CreateQueryDef("", "SELECT * FROM Clients")
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Clients", "C:\Export\Clients.xlsx", True
    MsgBox "Export terminé."
End Sub

Cette macro exporte les données clients vers un fichier Excel. Personnalisez le chemin et le nom de fichier selon vos besoins.

Bonnes pratiques

  • Toujours utiliser Option Explicit pour éviter les erreurs de variables
  • Nommer les variables de façon explicite (ex: strNomClient)
  • Gérer les erreurs avec On Error
  • Commenter le code pour la maintenance
  • Tester chaque macro sur des copies de données

Erreurs courantes à éviter

  • Oublier de fermer les Recordsets (fuites mémoire)
  • Ne pas gérer les erreurs de type "objet non défini"
  • Utiliser des noms de variables trop courts
  • Exécuter du code sur des formulaires fermés

Pour aller plus loin

Approfondissez vos compétences VBA avec nos formations complètes sur Learni Group.