Fonctionnalités avancées
Analyser avec des graphiques et Excel, échanger des données, personnaliser l’application, puis automatiser avec les événements, les macros et VBA.
Base Gestion commerciale : T_Clients, T_Commandes (N°Commande, N°Client, DateCommande, MontantHT), formulaire F_Clients et requête R_Commandes_Clients qui réunit les deux tables.
Les tableaux croisés et graphiques dynamiques
Les modes Tableau croisé dynamique et Graphique croisé dynamique ont disparu des formulaires depuis Access 2013. Dans Access 365, on utilise la requête d’analyse croisée, les graphiques modernes, ou Excel connecté à la base.
| Besoin | Outil actuel |
|---|---|
| Tableau à double entrée dans Access | Requête d’analyse croisée (voir la séquence Requêtes) |
| Graphique dans un formulaire ou un état | Création › Insérer un graphique moderne |
| Vrai tableau croisé dynamique filtrable | Excel connecté à Access |
Insérer un graphique moderne
- Ouvrez un formulaire ou un état en mode Création.
- Création › Insérer un graphique moderne › choisissez le type : histogramme, courbes, secteurs…
- Tracez le graphique. Dans le volet Paramètres du graphique : Source de données = R_Commandes_Clients.
- Réglez Axe (Catégorie) = Ville, Valeurs (Axe Y) = MontantHT (Somme), Légende (Série) si besoin.
Tableau croisé dynamique dans Excel
- Dans Excel : Données › Obtenir des données › À partir d’une base de données › À partir d’une base de données Microsoft Access.
- Choisissez la base, puis la table ou la requête.
- Chargez en Rapport de tableau croisé dynamique. Données › Actualiser tout relit la base à tout moment.
Connectez Excel à une requête plutôt qu’à une table : les champs utiles, les jointures et les calculs sont déjà préparés côté Access.
Importation et exportation de données
Importer un classeur Excel
- Données externes › Nouvelle source de données › À partir d’un fichier › Excel.
- Choisissez le fichier et le mode :
- Importer dans une nouvelle table ;
- Ajouter une copie à une table existante ;
- Lier : Access lit le fichier Excel sans copier les données.
- Choisissez la feuille, cochez Première ligne contient les en-têtes de colonnes.
- Vérifiez le type de données de chaque champ, choisissez la clé primaire, nommez la table.
- Cochez Enregistrer les étapes d’importation si l’opération se répète.
Exporter
- Sélectionnez la table, la requête ou l’état dans le volet de navigation.
- Données externes › Exporter › Excel, Fichier texte, PDF ou XPS, ou Plus › Word.
- Pour Excel, cochez Exporter les données avec la mise en forme et la disposition et Ouvrir le fichier de destination.
Avant d’importer, nettoyez le fichier Excel : une seule ligne d’en-têtes, pas de cellules fusionnées, pas de lignes de total, un seul type de donnée par colonne. Sinon Access crée une table Erreurs d’importation.
Les opérations enregistrées se relancent en un clic : Données externes › Importations enregistrées ou Exportations enregistrées.
Personnaliser Access
Options de la base de données active
- Fichier › Options › Base de données active.
- Réglez les options utiles :
| Option | Effet |
|---|---|
| Titre de l’application / Icône | Nom et icône dans la barre de titre |
| Afficher le formulaire | Formulaire ouvert au démarrage (menu d’accueil) |
| Options de la fenêtre de document | Documents à onglets ou fenêtres superposées |
| Compacter lors de la fermeture | Réduit la taille du fichier à chaque fermeture |
| Afficher le volet de navigation | Décoché : l’utilisateur ne voit plus les objets |
Ruban, accès rapide, volet de navigation
- Fichier › Options › Personnaliser le ruban : créez un onglet « Gestion » avec vos commandes favorites.
- Fichier › Options › Barre d’outils Accès rapide : ajoutez Compacter et réparer, Aperçu avant impression…
- Volet de navigation : clic droit sur son titre › Options de navigation › créez une catégorie personnalisée avec des groupes « Saisie », « Éditions ».
Pour contourner les options de démarrage et ouvrir la base normalement, maintenez Maj enfoncée pendant l’ouverture du fichier.
Manipuler des événements
Un événement est un moment précis de la vie d’un formulaire, d’un état ou d’un contrôle. On y attache une macro incorporée ou une procédure VBA.
| Événement | Se produit | Exemple d’usage |
|---|---|---|
| Sur ouverture / Sur chargement | À l’ouverture du formulaire | Aller sur une fiche vide |
| Sur activation | À chaque changement d’enregistrement | Afficher ou masquer un champ selon la fiche |
| Sur clic | Clic sur un bouton ou un contrôle | Ouvrir un autre formulaire |
| Avant MAJ | Avant l’enregistrement, peut l’annuler | Vérifier qu’un champ obligatoire est rempli |
| Après MAJ | Après la modification d’un contrôle | Recalculer, mettre en majuscules |
| Sur fermeture | À la fermeture | Revenir au menu |
Pas à pas
- Mode Création, sélectionnez l’objet (le formulaire ou un contrôle), F4 › onglet Événement.
- Cliquez sur le bouton … de l’événement voulu.
- Choisissez Générateur de macro (macro incorporée) ou Générateur de code (VBA).
Un bouton de commande tracé avec l’Assistant crée automatiquement une macro incorporée sur son événement Sur clic : idéal pour démarrer.
Macros & VBA
Créer une macro
- Créer › Macro : le Générateur de macros s’ouvre avec le Catalogue d’actions.
- Ajoutez des actions dans l’ordre, par exemple OuvrirFormulaire (F_Commandes) puis AtteindreEnregistrement (Nouveau).
- Enregistrez : M_Nouvelle_Commande. Exécutez-la avec le bouton Exécuter (!).
| Macro | VBA |
|---|---|
| Actions à choisir dans une liste | Code écrit librement |
| Rapide à apprendre, peu d’erreurs | Boucles, variables, calculs complexes |
| Gestion d’erreur limitée | Gestion d’erreur complète |
| Macro AutoExec lancée à l’ouverture de la base | Accès à Excel, Outlook, fichiers… |
Convertir une macro en VBA
- Ouvrez la macro en mode Création.
- Création de macro › Convertir les macros en Visual Basic.
- Access crée un module avec le code équivalent : une excellente façon d’apprendre VBA.
Si la barre jaune Avertissement de sécurité s’affiche, macros et VBA sont désactivés. Cliquez sur Activer le contenu, ou placez le dossier de la base dans un emplacement approuvé : Fichier › Options › Centre de gestion de la confidentialité.
Environnement VBA
Ouvrez l’éditeur avec Alt + F11, ou Outils de base de données › Visual Basic.
| Type de module | Contenu |
|---|---|
| Module de formulaire (Form_F_Clients) | Procédures événementielles du formulaire et de ses contrôles |
| Module standard (Insertion › Module) | Procédures et fonctions réutilisables partout |
Une procédure événementielle
Bouton cmdNouveau › événement Sur clic › Générateur de code :
Option Compare Database Option Explicit Private Sub cmdNouveau_Click() ' Aller sur une nouvelle fiche et placer le curseur dans Nom DoCmd.GoToRecord , , acNewRec Me.Nom.SetFocus End Sub
Ouvrir les commandes du client affiché
Private Sub cmdCommandes_Click() DoCmd.OpenForm "F_Commandes", , , "[N°Client]=" & Me![N°Client] End Sub
Ajoutez Option Explicit en tête de chaque module (Outils › Options › Déclaration des variables obligatoire) : toute faute de frappe dans un nom de variable sera signalée.
Me désigne le formulaire courant. Les noms contenant un espace ou un caractère spécial s’écrivent entre crochets : Me![N°Client].
Les boîtes de dialogue
MsgBox : informer et confirmer
Private Sub cmdSupprimer_Click() If MsgBox("Supprimer ce client ?", vbYesNo + vbQuestion, "Confirmation") = vbYes Then DoCmd.RunCommand acCmdDeleteRecord End If End Sub
| Constante | Effet |
|---|---|
vbOKOnly / vbYesNo / vbYesNoCancel | Boutons affichés |
vbInformation / vbQuestion / vbExclamation / vbCritical | Icône |
vbYes / vbNo / vbCancel | Valeur renvoyée selon le bouton cliqué |
InputBox : demander une valeur
Private Sub cmdFiltrerVille_Click() Dim strVille As String strVille = InputBox("Quelle ville ?", "Filtrer les clients") If strVille <> "" Then Me.Filter = "Ville='" & strVille & "'" Me.FilterOn = True End If End Sub
Pour une boîte de dialogue plus riche (listes, dates), créez un formulaire avec Fenêtre modale = Oui, Fenêtre indépendante = Oui et Style bordure = Dialogue.
La macro équivalente à MsgBox est l’action ZoneMessage.
Utiliser les outils de débogage
| Outil | Raccourci | Usage |
|---|---|---|
| Compiler | Débogage › Compiler | Détecte les erreurs de syntaxe dans tout le projet |
| Point d’arrêt | F9 | Le code s’arrête sur cette ligne (surlignée en bordeaux) |
| Pas à pas détaillé | F8 | Exécute ligne par ligne, en entrant dans les procédures appelées |
| Pas à pas principal | Maj + F8 | Exécute une procédure appelée d’un seul coup |
| Continuer | F5 | Reprend l’exécution normale |
| Fenêtre Exécution | Ctrl + G | ? Me.Nom affiche une valeur, Debug.Print écrit un suivi |
| Variables locales / Espions | Affichage | Suivre la valeur des variables pendant l’exécution |
Gérer les erreurs
Private Sub cmdImprimer_Click() On Error GoTo Gestion_Erreur DoCmd.OpenReport "E_Liste_Clients", acViewPreview Exit Sub Gestion_Erreur: MsgBox "Erreur " & Err.Number & " : " & Err.Description, vbCritical End Sub
En mode arrêt, survolez une variable avec la souris : sa valeur s’affiche en info-bulle. Vous pouvez aussi faire glisser la flèche jaune pour rejouer une ligne.
Une erreur non gérée affiche la boîte « Erreur d’exécution » : Débogage ouvre le code sur la ligne fautive, Fin arrête tout. Pensez à cliquer sur Réinitialiser (carré bleu) avant de relancer.
Récapitulatif
| Besoin | Outil |
|---|---|
| Graphique dans un formulaire ou un état | Création › Insérer un graphique moderne |
| Tableau croisé dynamique | Excel › Obtenir des données › Base Access |
| Importer, lier, exporter | Onglet Données externes |
| Formulaire de démarrage, titre | Fichier › Options › Base de données active |
| Réagir à une action | Feuille de propriétés › Événement › … |
| Automatiser sans coder | Créer › Macro |
| Éditeur VBA | Alt + F11 |
| Message / question | MsgBox, InputBox |
| Déboguer | F9, F8, Ctrl + G |
Exercice 1 : importer et démarrer
Importez un classeur Excel Prospects.xlsx dans une nouvelle table T_Prospects, puis faites ouvrir automatiquement F_Clients au démarrage de la base avec le titre « Gestion commerciale ».
Afficher le corrigé
- Données externes › Nouvelle source › Excel › Importer dans une nouvelle table › en-têtes cochés › clé primaire › T_Prospects.
- Fichier › Options › Base de données active : Titre = « Gestion commerciale », Afficher le formulaire = F_Clients.
- Fermer et rouvrir la base pour vérifier.
Exercice 2 : bouton avec confirmation
Dans F_Clients, ajoutez un bouton cmdSupprimer qui demande « Supprimer ce client ? » et ne supprime la fiche que si l’utilisateur répond Oui.
Afficher le corrigé
- Désactiver les Assistants Contrôle, tracer un bouton, Nom = cmdSupprimer, Légende = « Supprimer ».
- Événement Sur clic › … › Générateur de code.
- Écrire le test
If MsgBox(...) = vbYes Then DoCmd.RunCommand acCmdDeleteRecord, compiler, tester.
Exercice 3 : filtre par ville et débogage
Créez un bouton qui demande une ville par InputBox et filtre F_Clients. Placez un point d’arrêt, suivez l’exécution pas à pas et affichez la valeur saisie dans la fenêtre Exécution. Ajoutez une gestion d’erreur.
Afficher le corrigé
- Procédure cmdFiltrerVille_Click du cours, avec
Debug.Print strVilleaprès l’InputBox. - F9 sur la ligne InputBox, cliquer sur le bouton, avancer avec F8, lire la valeur dans Ctrl + G.
- Ajouter
On Error GoTo Gestion_Erreuret le bloc de message en fin de procédure.