SCRIPT DE PRÉSENTATION
Gestion des Factures Clients
Base de données Microsoft Access — Présentation de 10 minutes
Avant de commencer : l'esprit de cette présentation
Vous n'avez que 10 minutes et vous ne ferez pas de démonstration en direct dans Access. L'objectif est de
montrer, avec le support PowerPoint, ce que vous avez conçu et pourquoi chaque choix technique a été fait.
Le jury doit repartir avec la certitude que vous maîtrisez votre travail — pas seulement que vous l'avez
réalisé.
Ce document contient, pour chaque diapositive : un texte prêt à dire (vous pouvez le reformuler avec vos
mots), et une explication plus complète pour que vous compreniez vraiment le "pourquoi", et non juste le
"comment". C'est ce qui vous permettra de répondre à une question inattendue.
Répartition suggérée sur 10 minutes : Introduction et tables (2 min) — Requêtes (2,5 min) — Formulaires
(1,5 min) — Macros (3 min) — Conclusion (1 min).
Le script, diapositive par diapositive
SLIDE 1 — Page de titre
≈ 30 secondes
CE QUE VOUS DITES
« Bonjour à tous. Nous allons vous présenter notre projet C1 : la gestion des factures clients, réalisé
sous Microsoft Access. L'objectif était de concevoir une base de données capable d'automatiser l'ajout,
la consultation et la génération des factures pour une petite entreprise. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Ce projet répond à un besoin réel et courant en gestion : trop d'entreprises perdent du temps (et font
des erreurs) en calculant leurs factures à la main.
● Une base de données Access permet de centraliser l'information (clients, produits, factures) en évitant
les doubles saisies et les erreurs de calcul.
SLIDE 2 — Objectif du projet
≈ 45 secondes
CE QUE VOUS DITES
« Le cahier des charges nous demandait trois choses : pouvoir ajouter facilement des informations,
consulter rapidement les factures — notamment celles qui ne sont pas encore payées — et générer un
document de facture prêt à l'emploi. Pour cela, nous avons construit la base autour de quatre entités : le
Client, le Produit, la Facture, et le détail de chaque facture. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● En base de données, on appelle "entité" un objet du monde réel qu'on souhaite représenter (un client,
un produit...). Chaque entité devient une table.
● Pourquoi 4 tables et pas une seule grande table avec tout dedans ? Parce qu'une facture contient
plusieurs produits, et un même produit peut apparaître sur plusieurs factures : il fallait une table
intermédiaire (DétailsFacture) pour représenter cette relation "plusieurs-à-plusieurs". C'est un
principe fondamental des bases de données relationnelles.
SLIDE 3 — Architecture : les 4 tables
≈ 45 secondes
CE QUE VOUS DITES
« Voici la structure exacte de nos quatre tables, avec leurs champs. Chaque table possède une clé
primaire — un identifiant unique — représentée ici en gras. La table DétailsFacture est particulière : sa
clé primaire est composée de deux champs à la fois, IDFacture et IDProduit, car c'est elle qui fait le lien
entre une facture et les produits qu'elle contient. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Une clé primaire garantit qu'il n'existe jamais deux lignes identiques dans une table (par exemple,
deux clients avec le même IDClient).
● Nous avons choisi des types de données précis pour chaque champ : Monétaire pour les prix (gère
automatiquement les décimales), Date/Heure pour les dates, Texte court pour les noms et statuts,
NuméroAuto pour les identifiants qui s'incrémentent seuls.
● TotalHT, TotalTVA et TotalTTC sont marqués comme "champs calculés" : ce sont des colonnes de la
table Facture, mais leur valeur n'est jamais saisie à la main — elle est calculée et écrite
automatiquement par une requête (voir Phase 2).
SLIDE 4 — Les relations entre les tables
≈ 45 secondes
CE QUE VOUS DITES
« Nous avons ensuite relié ces quatre tables dans la fenêtre "Relations" d'Access, avec l'intégrité
référentielle activée. Concrètement, cela veut dire qu'Access nous empêche de créer une facture pour un
client qui n'existe pas, ou une ligne de détail pour un produit inexistant. C'est une sécurité essentielle
pour garder des données cohérentes. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Le "1" et le symbole infini (∞) sur le schéma représentent une relation "un-à-plusieurs" : un client
peut avoir plusieurs factures, mais chaque facture appartient à un seul client.
● Sans intégrité référentielle, rien n'empêcherait de saisir une erreur (par exemple IDClient = 99 alors
que ce client n'existe pas). Avec elle, Access refuse automatiquement l'enregistrement et affiche un
message d'erreur explicite.
● C'est cette même sécurité qui nous a bloqués à une étape (une ligne DétailsFacture avec IDProduit =
0) — la preuve que le système fonctionnait comme prévu.
SLIDE 5 — Calculer les totaux automatiquement
≈ 60 secondes
CE QUE VOUS DITES
« C'était l'étape la plus technique du projet. Le cahier des charges impose que TotalHT, TotalTVA et
TotalTTC soient calculés automatiquement, jamais saisis à la main. Nous avons construit ce calcul en
trois étapes : une première requête calcule le montant de chaque ligne de produit, une deuxième
additionne ces montants par facture, et une troisième écrit ces totaux dans la table Facture. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Pourquoi trois étapes et pas une seule requête ? Parce qu'Access refuse qu'on applique une fonction
de somme à une formule qui utilise déjà un autre champ calculé, dans la même requête. Il a fallu
séparer le calcul (étape 1) du regroupement/somme (étape 2).
● L'étape 3 a posé un problème supplémentaire : une requête qui regroupe et somme des données
devient automatiquement "non modifiable" en Access — impossible d'écrire dedans. Nous avons
donc utilisé la fonction DSum(), qui calcule une somme directement dans une table ou requête
source, sans passer par le mode "Totaux". C'est l'équivalent, en Access, de la fonction [Link]
dans Excel.
● Si le jury demande "pourquoi ne pas juste taper les totaux à la main ?" : parce que le cahier des
charges l'exige explicitement, et surtout parce qu'une saisie manuelle peut contenir des erreurs de
calcul — l'automatisation les élimine.
SLIDE 6 — Retrouver les factures impayées
≈ 40 secondes
CE QUE VOUS DITES
« Nous avons créé une deuxième requête, plus simple, qui filtre uniquement les factures dont le statut de
paiement est "Impayée". Cette requête nous sert à deux choses : donner une vue rapide des créances en
attente, et alimenter automatiquement l'une de nos macros. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Le critère de filtre est appliqué directement dans la grille de création de requête, sur le champ
StatutPaiement, avec la valeur exacte "Impayée" entre guillemets.
● C'est un exemple simple de requête de sélection, à ne pas confondre avec les requêtes de calcul de la
diapositive précédente.
SLIDE 7 — Trois formulaires de saisie
≈ 50 secondes
CE QUE VOUS DITES
« Pour que la base soit utilisable sans connaître Access, nous avons créé trois formulaires : un pour les
clients, un pour les produits, et un pour les factures. Ce dernier est le plus élaboré : il contient un sous-
formulaire qui affiche directement les produits liés à chaque facture, ainsi qu'une liste déroulante pour
choisir le client par son nom plutôt que de taper un numéro. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Un sous-formulaire permet d'afficher, dans le même écran, les données d'une table "enfant" (ici
DétailsFacture) liées à l'enregistrement affiché dans le formulaire "parent" (Facture).
● La liste déroulante a été créée avec l'Assistant Liste de choix : elle affiche le nom du client à l'écran,
mais stocke en réalité son IDClient dans la table — l'utilisateur ne voit jamais les numéros
techniques.
● C'est un choix d'ergonomie : moins d'erreurs de saisie, et une utilisation possible par quelqu'un qui ne
connaît pas la structure interne de la base.
SLIDE 8 — Vue d'ensemble des 4 macros
≈ 30 secondes
CE QUE VOUS DITES
« La dernière phase du projet consistait à automatiser certaines actions grâce à des macros. Nous en
avons créé quatre : l'ouverture automatique d'un formulaire après l'ajout d'un client, l'affichage filtré
des factures impayées, la génération d'une facture en PDF, et l'envoi d'un mail de relance sous
condition. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Une macro, dans Access, est une suite d'actions prédéfinies qui s'exécute automatiquement en
réponse à un événement (l'ouverture d'un formulaire, un clic sur un bouton, l'ajout d'un
enregistrement...).
● L'intérêt des macros est de faire gagner du temps à l'utilisateur final et de réduire les oublis (par
exemple, ne jamais oublier de créer une facture après avoir ajouté un client).
SLIDE 9 — Macros 1 et 2 : réagir aux événements
≈ 50 secondes
CE QUE VOUS DITES
« La première macro est attachée à l'événement "Après insertion" du formulaire Client : dès qu'un
nouveau client est enregistré, le formulaire Facture s'ouvre automatiquement pour créer sa première
facture. La deuxième macro est attachée à l'événement "À l'ouverture" du formulaire Facture, et
applique notre requête des factures impayées grâce à l'action AppliquerFiltreOuTri. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● "Après insertion" se déclenche juste après qu'un nouvel enregistrement est sauvegardé — pas pendant
la saisie, mais une fois qu'elle est validée.
● AppliquerFiltreOuTri est une action Access qui restreint l'affichage d'un formulaire aux
enregistrements correspondant à une requête ou un critère, sans modifier les données elles-mêmes :
c'est un filtre d'affichage, réversible.
SLIDE 10 — Macros 3 et 4 : produire et transmettre
≈ 60 secondes
CE QUE VOUS DITES
« La troisième macro est déclenchée par un bouton sur le formulaire Facture : elle exporte un État — un
document de présentation de la facture — au format PDF, et l'ouvre automatiquement. La quatrième
macro est conditionnelle : elle vérifie d'abord si le statut de la facture est "Impayée" avant d'envoyer un
mail de relance avec la facture en pièce jointe. Si la facture est déjà payée, rien ne se passe. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Un État (ou "rapport") dans Access est un objet conçu pour l'impression et la présentation des
données, contrairement au formulaire qui est conçu pour la saisie.
● La macro 4 utilise un bloc conditionnel "Si... Alors" : c'est exactement la même logique qu'un test
conditionnel en programmation (if/then), mais construite visuellement avec le Générateur de macro,
sans écrire de code.
● Cette logique conditionnelle est importante à expliquer : elle montre que la base ne se contente pas
d'exécuter des actions bêtement, elle vérifie une condition métier réelle (ne relancer que les impayés)
avant d'agir.
SLIDE 11 — Les obstacles surmontés
≈ 60 secondes
CE QUE VOUS DITES
« Nous voulons aussi partager les principales difficultés rencontrées, car elles montrent notre démarche
de résolution de problèmes. Nous avons été bloqués trois fois sur la même partie du projet : le calcul des
totaux. Access refusait d'abord de sommer un champ déjà calculé, puis refusait de mettre à jour une
requête agrégée, puis ne reconnaissait pas le nom français de la fonction DSomme. Nous avons résolu
ces trois blocages un par un, en comprenant à chaque fois la cause exacte de l'erreur avant de
corriger. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● C'est un point fort à mettre en avant devant le jury : ne pas cacher les difficultés, mais montrer
qu'elles ont été comprises et résolues méthodiquement, pas par hasard.
● Le nom de la fonction (DSum en anglais, DSomme en français) dépend des paramètres régionaux du
logiciel Access installé — un détail technique qui peut surprendre, mais qui s'explique simplement.
SLIDE 12 — Bilan et conclusion
≈ 40 secondes
CE QUE VOUS DITES
« Pour conclure, notre base de données répond à l'ensemble des exigences du cahier des charges :
quatre tables reliées avec intégrité référentielle, des calculs automatiques fiables, trois formulaires
ergonomiques, et quatre macros qui couvrent tout le cycle de vie d'une facture, de sa création à son
paiement. Merci de votre attention, nous sommes à votre disposition pour vos questions. »
POUR BIEN COMPRENDRE (ET RÉPONDRE AUX QUESTIONS)
● Gardez cette dernière phrase simple et sûre de vous : elle doit donner envie au jury de poser des
questions, pas de douter du travail réalisé.
Questions probables du jury — et comment y répondre
« Pourquoi une base de données plutôt qu'un simple tableau Excel ? »
Excel ne garantit pas la cohérence des données (rien n'empêche de saisir deux fois le même client avec des
informations différentes), et il devient vite ingérable dès qu'on doit croiser plusieurs types d'informations liées
entre elles (clients, produits, factures). Une base de données relationnelle comme Access élimine les
doublons, impose des règles de cohérence (intégrité référentielle), et permet des calculs et des filtres bien plus
puissants.
« Que se passe-t-il si on supprime un client qui a des factures ? »
Grâce à l'intégrité référentielle, Access refuse la suppression tant que des factures liées existent — sauf si
l'option de suppression en cascade a été activée. Cela protège contre la perte accidentelle de données
importantes.
« Pourquoi TotalHT n'est-il pas un vrai "champ calculé" Access ? »
Le type "Champ calculé" natif d'Access ne fonctionne que pour des formules basées sur des champs de la
même table. Ici, le calcul dépend des lignes de la table DétailsFacture, donc d'une autre table : il fallait passer
par des requêtes et une mise à jour programmée, ce qui est en réalité l'approche professionnelle recommandée
pour ce type de besoin.
« La macro 4 a-t-elle vraiment envoyé un mail ? »
Répondez avec honnêteté : la logique conditionnelle est fonctionnelle et testée dans le Générateur de macro
(le bloc Si/Alors s'exécute correctement) ; l'envoi réel dépend de la présence d'un client de messagerie comme
Outlook configuré sur le poste utilisé pour la démonstration.
Conseil pour l'oral
N'apprenez pas ce texte par cœur mot à mot : lisez-le plusieurs fois pour vous approprier les idées, puis
reformulez avec vos propres mots le jour J. Un jury remarque tout de suite un discours récité, et préfère
toujours une explication un peu moins parfaite mais sincère. Vous connaissez ce projet mieux que
quiconque : vous l'avez construit, bloqué, débloqué, et terminé. Faites-vous confiance.