A3iformations · Microsoft Access

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.

Access 365Préparation TOSAQualiopi
Base exemple

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.

1

Les tableaux croisés et graphiques dynamiques

ObjectifSynthétiser et visualiser les données d’Access avec les outils actuels.
Attention

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.

BesoinOutil actuel
Tableau à double entrée dans AccessRequête d’analyse croisée (voir la séquence Requêtes)
Graphique dans un formulaire ou un étatCréation › Insérer un graphique moderne
Vrai tableau croisé dynamique filtrableExcel connecté à Access

Insérer un graphique moderne

  1. Ouvrez un formulaire ou un état en mode Création.
  2. Création › Insérer un graphique moderne › choisissez le type : histogramme, courbes, secteurs…
  3. Tracez le graphique. Dans le volet Paramètres du graphique : Source de données = R_Commandes_Clients.
  4. Réglez Axe (Catégorie) = Ville, Valeurs (Axe Y) = MontantHT (Somme), Légende (Série) si besoin.

Tableau croisé dynamique dans Excel

  1. Dans Excel : Données › Obtenir des données › À partir d’une base de données › À partir d’une base de données Microsoft Access.
  2. Choisissez la base, puis la table ou la requête.
  3. Chargez en Rapport de tableau croisé dynamique. Données › Actualiser tout relit la base à tout moment.
Astuce

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.

2

Importation et exportation de données

ObjectifFaire entrer des données d’Excel ou d’un fichier texte dans Access, et en sortir vers Excel, PDF ou Word.

Importer un classeur Excel

  1. Données externes › Nouvelle source de données › À partir d’un fichier › Excel.
  2. 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.
  3. Choisissez la feuille, cochez Première ligne contient les en-têtes de colonnes.
  4. Vérifiez le type de données de chaque champ, choisissez la clé primaire, nommez la table.
  5. Cochez Enregistrer les étapes d’importation si l’opération se répète.

Exporter

  1. Sélectionnez la table, la requête ou l’état dans le volet de navigation.
  2. Données externes › Exporter › Excel, Fichier texte, PDF ou XPS, ou Plus › Word.
  3. Pour Excel, cochez Exporter les données avec la mise en forme et la disposition et Ouvrir le fichier de destination.
Attention

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.

Bon à savoir

Les opérations enregistrées se relancent en un clic : Données externes › Importations enregistrées ou Exportations enregistrées.

3

Personnaliser Access

ObjectifTransformer la base en application : écran d’accueil, titre, navigation maîtrisée.

Options de la base de données active

  1. Fichier › Options › Base de données active.
  2. Réglez les options utiles :
OptionEffet
Titre de l’application / IcôneNom et icône dans la barre de titre
Afficher le formulaireFormulaire ouvert au démarrage (menu d’accueil)
Options de la fenêtre de documentDocuments à onglets ou fenêtres superposées
Compacter lors de la fermetureRéduit la taille du fichier à chaque fermeture
Afficher le volet de navigationDécoché : l’utilisateur ne voit plus les objets

Ruban, accès rapide, volet de navigation

  1. Fichier › Options › Personnaliser le ruban : créez un onglet « Gestion » avec vos commandes favorites.
  2. Fichier › Options › Barre d’outils Accès rapide : ajoutez Compacter et réparer, Aperçu avant impression…
  3. Volet de navigation : clic droit sur son titre › Options de navigation › créez une catégorie personnalisée avec des groupes « Saisie », « Éditions ».
Astuce

Pour contourner les options de démarrage et ouvrir la base normalement, maintenez Maj enfoncée pendant l’ouverture du fichier.

4

Manipuler des événements

ObjectifDéclencher une action au bon moment : à l’ouverture, au clic, après une saisie.

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énementSe produitExemple d’usage
Sur ouverture / Sur chargementÀ l’ouverture du formulaireAller sur une fiche vide
Sur activationÀ chaque changement d’enregistrementAfficher ou masquer un champ selon la fiche
Sur clicClic sur un bouton ou un contrôleOuvrir un autre formulaire
Avant MAJAvant l’enregistrement, peut l’annulerVérifier qu’un champ obligatoire est rempli
Après MAJAprès la modification d’un contrôleRecalculer, mettre en majuscules
Sur fermetureÀ la fermetureRevenir au menu

Pas à pas

  1. Mode Création, sélectionnez l’objet (le formulaire ou un contrôle), F4 › onglet Événement.
  2. Cliquez sur le bouton … de l’événement voulu.
  3. Choisissez Générateur de macro (macro incorporée) ou Générateur de code (VBA).
Astuce

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.

5

Macros & VBA

ObjectifAutomatiser sans programmer avec les macros, puis passer à VBA quand il faut plus de souplesse.

Créer une macro

  1. Créer › Macro : le Générateur de macros s’ouvre avec le Catalogue d’actions.
  2. Ajoutez des actions dans l’ordre, par exemple OuvrirFormulaire (F_Commandes) puis AtteindreEnregistrement (Nouveau).
  3. Enregistrez : M_Nouvelle_Commande. Exécutez-la avec le bouton Exécuter (!).
MacroVBA
Actions à choisir dans une listeCode écrit librement
Rapide à apprendre, peu d’erreursBoucles, variables, calculs complexes
Gestion d’erreur limitéeGestion d’erreur complète
Macro AutoExec lancée à l’ouverture de la baseAccès à Excel, Outlook, fichiers…

Convertir une macro en VBA

  1. Ouvrez la macro en mode Création.
  2. Création de macro › Convertir les macros en Visual Basic.
  3. Access crée un module avec le code équivalent : une excellente façon d’apprendre VBA.
Attention

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é.

6

Environnement VBA

ObjectifSe repérer dans l’éditeur Visual Basic et écrire une première procédure.

Ouvrez l’éditeur avec Alt + F11, ou Outils de base de données › Visual Basic.

Explorateur de projetsModules de formulaires, modules standard
Fenêtre CodeLes procédures du module sélectionné : listes Objet et Procédure en haut
PropriétésNom du module ou de l’objet
Fenêtre Exécution (Ctrl + G) : tester une instruction, lire les Debug.Print
Type de moduleContenu
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
Astuce

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.

Bon à savoir

Me désigne le formulaire courant. Les noms contenant un espace ou un caractère spécial s’écrivent entre crochets : Me![N°Client].

7

Les boîtes de dialogue

ObjectifInformer l’utilisateur, lui demander une confirmation ou une valeur.

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
ConstanteEffet
vbOKOnly / vbYesNo / vbYesNoCancelBoutons affichés
vbInformation / vbQuestion / vbExclamation / vbCriticalIcône
vbYes / vbNo / vbCancelValeur 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
Bon à savoir

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.

Astuce

La macro équivalente à MsgBox est l’action ZoneMessage.

8

Utiliser les outils de débogage

ObjectifTrouver et corriger les erreurs dans le code VBA.
OutilRaccourciUsage
CompilerDébogage › CompilerDétecte les erreurs de syntaxe dans tout le projet
Point d’arrêtF9Le code s’arrête sur cette ligne (surlignée en bordeaux)
Pas à pas détailléF8Exécute ligne par ligne, en entrant dans les procédures appelées
Pas à pas principalMaj + F8Exécute une procédure appelée d’un seul coup
ContinuerF5Reprend l’exécution normale
Fenêtre ExécutionCtrl + G? Me.Nom affiche une valeur, Debug.Print écrit un suivi
Variables locales / EspionsAffichageSuivre 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
Astuce

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.

Attention

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

BesoinOutil
Graphique dans un formulaire ou un étatCréation › Insérer un graphique moderne
Tableau croisé dynamiqueExcel › Obtenir des données › Base Access
Importer, lier, exporterOnglet Données externes
Formulaire de démarrage, titreFichier › Options › Base de données active
Réagir à une actionFeuille de propriétés › Événement › …
Automatiser sans coderCréer › Macro
Éditeur VBAAlt + F11
Message / questionMsgBox, InputBox
DéboguerF9, F8, Ctrl + G
Découverte

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é
  1. Données externes › Nouvelle source › Excel › Importer dans une nouvelle table › en-têtes cochés › clé primaire › T_Prospects.
  2. Fichier › Options › Base de données active : Titre = « Gestion commerciale », Afficher le formulaire = F_Clients.
  3. Fermer et rouvrir la base pour vérifier.
Application

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é
  1. Désactiver les Assistants Contrôle, tracer un bouton, Nom = cmdSupprimer, Légende = « Supprimer ».
  2. Événement Sur clic › … › Générateur de code.
  3. Écrire le test If MsgBox(...) = vbYes Then DoCmd.RunCommand acCmdDeleteRecord, compiler, tester.
Maîtrise

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é
  1. Procédure cmdFiltrerVille_Click du cours, avec Debug.Print strVille après l’InputBox.
  2. F9 sur la ligne InputBox, cliquer sur le bouton, avancer avec F8, lire la valeur dans Ctrl + G.
  3. Ajouter On Error GoTo Gestion_Erreur et le bloc de message en fin de procédure.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA www.a3iformations.fr