Chapitre 4
PRATIQUE GESTION DE BASE DE DONNEES SUR MICROSOFT ACCESS (partie 1/2)
Lecture : 16 minQuiz de 10 questions
## Objectifs et prérequis
**Objectifs** : À la fin de ce chapitre, l’élève sera capable d’:
- ouvrir et fermer Microsoft Access, identifier les principaux éléments de l’interface (ruban, volet de navigation, barre d’état) ;
- créer une nouvelle base de données, la nommer et l’enregistrer dans un dossier approprié ;
- concevoir des tables, définir les types de champs, saisir des données et établir des relations entre plusieurs tables ;
- créer et modifier des formulaires (instantané, assistant, avec sous‑formulaire, liste modifiable), ajuster les propriétés des contrôles et imprimer les formulaires.
**Prérequis** : maîtrise de l’utilisation d’un ordinateur sous Windows (gestion de fichiers, copier‑coller, navigation dans l’explorateur), notions de base en gestion de l’information (entité, attribut, enregistrement) et familiarité avec le tableur Excel (saisie de données, mise en forme simple).
> **À retenir** : Microsoft Access est un SGBD relationnel destiné à la création d’applications de bureau légères, adapté aux besoins des PME camerounaises.
## Introduction contextualisée
Dans le contexte professionnel camerounais, de nombreuses structures (entreprises de commerce, cabinets comptables, services administratifs) gèrent encore leurs données sur des classeurs papier ou des feuilles Excel peu structurées. L’utilisation d’un SGBD comme Microsoft Access permet de centraliser l’information, d’éviter les redondances, d’assurer l’intégrité des données grâce aux relations et de produire rapidement des états et des formulaires adaptés aux besoins métiers (suivi de stock, gestion de la clientèle, comptabilité analytique). Ce chapitre présente les premières étapes de mise en œuvre d’une base de données Access, conformément au référentiel de compétences du Probatoire séries FAM.
## I. Interface de travail d’ACCESS (Leçon 8)
### 1. Ouverture et fermeture d’ACCESS
- **Ouverture** : double‑clic sur l’icône Access ou sélection via le menu Démarrer → Microsoft Office → Microsoft Access.
- **Fermeture** : clic sur le bouton **X** en haut à droite ou utilisation du raccourci **Alt + F4**.
> **À retenir** : Toujours enregistrer le travail avant de fermer (Ctrl + S) pour éviter toute perte de données.
### 2. Présentation de l’interface
| Élément | Fonction principale |
|---------|---------------------|
| **Ruban** | Regroupe les onglets (Accueil, Création, Données, Outils de base de données, etc.) contenant les commandes contextuelles. |
| **Volet de navigation** | Affiche les objets de la base (tables, requêtes, formulaires, états, macros, modules). Permet l’ouverture, la renommation et la suppression. |
| **Barre d’état** | Indique le mode actif (Feuille de données, Création), le nombre d’enregistrements affichés et les éventuels messages d’erreur. |
| **Zone de travail** | Espace où l’on conçoit ou visualise les objets (table en mode création, formulaire en mode formulaire, etc.). |
| **Barre d’accès rapide** | Personnalisable ; contient les commandes fréquemment utilisées (Enregistrer, Annuler, Rétablir). |
> **À retenir** : Le ruban s’adapte au contexte ; lorsqu’on sélectionne une table, l’onglet **Outils de tables** apparaît avec les groupes **Champs** et **Propriétés**.
### 3. Création d’une base de données
1. Dans l’écran d’accueil, choisir **Nouveau** → **Base de données vierge**.
2. Spécifier le nom du fichier (ex. `GestionStock.accdb`) et le dossier de destination (ex. `Documents\ProjetsCAM`).
3. Cliquer **Créer**. Access ouvre automatiquement une table nommée `Table1` en mode feuille de données.
> **À retenir** : L’extension `.accdb` correspond au format Access 2007‑2021 ; éviter les anciens formats `.mdb` sauf nécessité de compatibilité.
### 4. Enregistrement et gestion des objets
- **Enregistrement automatique** : Access enregistre les modifications d’objet dès la fermeture de l’objet ou le passage en mode feuille de données.
- **Renommage** : clic droit sur l’objet dans le volet de navigation → **Renommer**.
- **Suppression** : même procédure → **Supprimer** (confirmation requise).
> **À retenir** : Toute suppression d’objet est irréversible ; il est recommandé d’exporter une copie de sauvegarde avant toute opération critique.
## II. Les tables et mise en relation (Leçon 9)
### 1. Création d’une table
**Méthode 1 – Mode feuille de données**
- Dans le volet de navigation, double‑cliquer sur `Table1`.
- Saisir directement les données ; Access crée automatiquement des champs de type **Texte Court** (pour les premières colonnes) et **Nombre entier** (pour les colonnes contenant uniquement des chiffres).
**Méthode 2 – Mode création** (recommandé pour un contrôle précis)
1. Onglet **Création** → **Table Création**.
2. Dans la grille, définir pour chaque ligne :
- **Nom du champ** (ex. `CodeArticle`, `Designation`, `PrixUnitaire`, `QuantiteStock`).
- **Type de données** (Texte Court, Nombre, Date/Heure, Oui/Non, Monnaie, etc.).
- **Propriétés** (Taille du champ, Format, Valeur par défaut, Règle de validation, Texte d’aide).
3. Définir une **clé primaire** : clic droit sur le champ souhaité → **Clé primaire** (icône clé).
4. Enregistrer la table (Ctrl + S) en lui donnant un nom explicite (ex. `Articles`).
> **À retenir** : Le type **Monnaie** stocke les valeurs avec quatre décimales de précision, adapté aux prix CFA.
### 2. Saisie de données dans une table
- Ouvrir la table en **Feuille de données** (double‑clic).
- Saisir chaque enregistrement ligne par ligne ; utiliser **Tab** pour passer au champ suivant, **Entrée** pour valider l’enregistrement et passer à la ligne suivante.
- Utiliser les **listes déroulantes** si un champ possède une **liste de valeurs** (propriété *Liste de valeurs* ou *Table/requête*).
> **À retenir** : Toujours vérifier la cohérence des données (ex. quantité non négative) grâce à une règle de validation (`>=0`).
### 3. Mise en relation de plusieurs tables
**Concept** : Une relation relie la clé primaire d’une table (parent) à une clé étrangère d’une autre table (enfant) afin d’assurer l’intégrité référentielle.
**Étapes**
1. Onglet **Outils de base de données** → **Relations**.
2. Ajouter les tables concernées (ex. `Articles`, `Fournisseurs`, `BonCommande`).
3. Glisser le champ clé primaire de la table parent (ex. `Fournisseurs.CodeFournisseur`) sur le champ clé étrangère de la table enfant (ex. `BonCommande.CodeFournisseur`).
4. Dans la boîte de dialogue **Modifier les relations**, choisir :
- **Type de jointure** : 1 : N (un fournisseur peut avoir plusieurs bons de commande).
- **Appliquer l’intégrité référentielle** (cocher) → empêche la suppression d’un fournisseur tant qu’il est lié à un bon de commande.
- **Cascade de mise à jour des champs liés** (optionnel) → met à jour automatiquement la clé étrangère si la clé primaire change.
5. Cliquer **Créer**, puis **Fermer**. La ligne de jointure apparaît avec un symbole : 1‑N.
> **À retenir** : L’intégrité référentielle évite les orphelins et garantit que chaque enregistrement enfant possède un parent valide.
### 4. Exemple professionnel : gestion des stocks d’une quincaillerie au Cameroun
| Table | Champs principaux | Type de données |
|-------|-------------------|-----------------|
| `Fournisseurs` | `CodeFournisseur` (PK), `NomFournisseur`, `ContactTelephone`, `AdresseEmail` | Texte Court, Texte Court, Texte Court, Texte Court |
| `Articles` | `CodeArticle` (PK), `Designation`, `PrixUnitaire`, `QuantiteStock`, `CodeFournisseur` (FK) | Texte Court, Texte Court, Monnaie, Nombre entier, Nombre entier |
| `BonCommande` | `NumBon` (PK), `DateCommande`, `CodeFournisseur` (FK), `MontantTotal` | Nombre entier, Date/Heure, Nombre entier, Monnaie |
- Relation 1 : N entre `Fournisseurs` et `Articles` (un fournisseur fournit plusieurs articles).
- Relation 1 : N entre `Fournisseurs` et `BonCommande` (un fournisseur peut recevoir plusieurs bons de commande).
> **À retenir** : La clé étrangère `CodeFournisseur` dans `Articles` permet de connaître rapidement le fournisseur d’un article lors de la saisie d’un bon de commande.
## III. Les formulaires (Leçon 10)
### 1. Création d’un formulaire instantané
- Sélectionner la table source dans le volet de navigation (ex. `Articles`).
- Onglet **Création** → **Formulaire** (dans le groupe *Formulaires*).
- Access génère un formulaire contenant tous les champs de la table, disposés en colonne.
- Enregistrer sous un nom explicite (ex. `FrmArticlesSaisie`).
> **À retenir** : Le formulaire instantané est utile pour une saisie rapide ; il peut être affiné ensuite.
### 2. Création d’un formulaire avec l’assistant
1. Onglet **Création** → **Assistant formulaire**.
2. Choisir la table ou la requête source (ex. `ReqArticlesAvecFournisseur`).
3. Sélectionner les champs à inclure (ou tous).
4. Choisir la disposition (Colonnaire, Tabulaire, Justifié, Feuille de données).
5. Choisir un style (Office, Bloc, etc.).
6. Nommer le formulaire (ex. `FrmArticlesAvecFournisseur`) et terminer.
L’assistant permet d’ajouter un **sous‑formulaire** lié à une relation (ex. afficher les lignes de bon de commande liées à un article).
> **À retenir** : Le sous‑formulaire apparaît comme un objet imbriqué ; il hérite de la relation définie entre les tables.
### 3. Saisie de données dans un formulaire
- Ouvrir le formulaire en **Mode formulaire** (double‑clic ou clic droit → **Ouvrir**).
- Naviguer entre les enregistrements avec les boutons de navigation (premier, précédent, suivant, dernier) ou les touches **Ctrl + PageUp/PageDown**.
- Saisir ou modifier les valeurs directement dans les contrôles (zone de texte, liste déroulante, case à cocher).
- Les modifications sont enregistrées automatiquement lorsqu’on passe à un autre enregistrement ou qu’on ferme le formulaire.
> **À retenir** : Utiliser la touche **F5** pour actualiser le formulaire si la source a été modifiée extérieurement.
### 4. Modification des propriétés des formulaires et des contrôles
- Ouvrir le formulaire en **Mode création** (clic droit → **Mode création**).
- **Propriétés du formulaire** (fenêtre Propriétés) :
- `Caption` : titre affiché dans la barre de titre.
- `Default View` : Feuille de données, Simple ou Continue.
- `Allow Additions`, `Allow Deletions`, `Allow Edits` : autorisent ou interdisent les opérations.
- **Propriétés d’un contrôle** (ex. zone de texte `txtPrixUnitaire`) :
- `Format` : Monnaie, avec symbole CFA.
- `Decimal Places` : 0 (les prix sont arrondis au franc CFA).
- `Enabled` : Oui/Non selon le contexte (ex. désactiver le prix lorsqu’un article est en rupture).
- `Tab Index` : ordre de navigation au clavier.
> **À retenir** : Ajuster le `Tab Index` améliore l’ergonomie de la saisie, surtout pour les utilisateurs habitués au clavier.
### 5. Insertion d’un sous‑formulaire
- En mode création du formulaire parent, ouvrir le volet **Contrôles** → **Sous‑formulaire/état lié**.
- Cliquer où l’on veut placer le sous‑formulaire, suivre l’assistant :
1. Choisir la table/requête source (ex. `LignesBonCommande`).
2. Lier les champs parent/enfant (ex. `Articles.CodeArticle` ↔ `LignesBonCommande.CodeArticle`).
3. Choisir le type d’affichage (Feuille de données ou Bloc).
4. Terminer et ajuster la taille.
> **À retenir** : Le sous‑formulaire hérite automatiquement du filtre appliqué au formulaire parent lorsqu’on utilise la propriété `Link Master Fields` / `Link Child Fields`.
### 6. Création d’une liste modifiable (ComboBox liée à une table)
- En mode création, choisir **Liste déroulante** dans le groupe *Contrôles*.
- Dessiner la liste où souhaitée.
- Dans la feuille de propriétés :
- `Row Source Type` : Table/Requête.
- `Row Source` : `SELECT CodeFournisseur, NomFournisseur FROM Fournisseurs ORDER BY NomFournisseur;`
- `Bound Column` : 1 (la colonne qui sera stockée).
- `Column Count` : 2.
- `Column Widths` : `0cm;4cm` (masquer la colonne clé, afficher le nom).
- Définir `Limit To List` : Oui pour empêcher la saisie de valeurs non présentes.
> **À retenir** : Une liste modifiable garantit la cohérence des références (ex. code fournisseur) tout en offrant une interface conviviale.
### 7. Impression d’un formulaire
- Ouvrir le formulaire en **Mode aperçu avant impression** (onglet *Fichier* → *Imprimer* → *Aperçu avant impression*).
- Ajuster les marges, l’orientation (Portrait/Paysage) et l’échelle si nécessaire.
- Cliquer **Imprimer** ou choisir **Imprimer un état** si l’on désire un mise en page plus élaborée (créer un état basé sur le formulaire).
> **À retenir** : L’aperçu permet de vérifier que aucun contrôle n’est coupé avant d’envoyer à l’imprimante.
## Synthèse du chapitre
- **Interface Access** : ruban, volet de navigation, barre d’état, zone de travail, barre d’accès rapide.
- **Création de base** : fichier `.accdb`, enregistrement fréquent (Ctrl + S).
- **Tables** : définition des champs, types de données, clé primaire, règles de validation, saisie en feuille de données ou mode création.
- **Relations** : intégrité référentielle, cascade de mise à jour/suppression, jointures 1 : N.
- **Formulaires** : instantané, assistant, sous‑formulaire, liste modifiable, propriétés (Caption, Format, Enabled, Tab Index).
- **Impression** : aperçu avant impression, réglages marges/orientation.
> **À retenir** : Une base bien structurée (tables normalisées, relations avec intégrité référentielle) réduit les redondances et facilite la production de formulaires fiables pour la gestion quotidienne d’une PME camerounaise.
## Glossaire
| Terme | Définition |
|-------|------------|
| **SGBD** | Système de Gestion de Base de Données, logiciel permettant de définir, manipuler et administrer des bases de données. |
| **Table** | Objet stockant les enregistrements sous forme de lignes (enregistrements) et de colonnes (champs). |
| **Champ** | Colonne d’une table définie par un nom, un type de données et des propriétés éventuelles. |
| **Clé primaire** | Champ ou ensemble de champs assurant l’unicité de chaque enregistrement dans une table. |
| **Clé étrangère** | Champ d’une table faisant référence à la clé primaire d’une autre table, établissant une relation. |
| **Intégrité référentielle** | Règle qui empêche l’enregistrement d’une clé étrangère qui ne pointe vers aucune clé primaire existante. |
| **Formulaire** | Interface utilisateur permettant la saisie, la consultation et la modification des données d’une table ou d’une requête. |
| **Sous‑formulaire** | Formulaire imbriqué dans un autre, affichant les enregistrements liés grâce à une relation. |
| **Liste modifiable (ComboBox)** | Contrôle permettant de choisir une valeur parmi une liste prédéfinie ou d’en saisir une nouvelle, liée à une table/requête. |
| **Mode création** | Vue permettant de concevoir la structure d’un objet (table, formulaire, état). |
| **Mode feuille de données** | Vue permettant de saisir et de visualiser les données d’une table ou d’un résultat de requête. |
| **Mode formulaire** | Vue interactive d’un formulaire pour la saisie ou la consultation des enregistrements. |
| **Propriété** | Attribut d’un objet (table, champ, formulaire, contrôle) qui définit son comportement ou son apparence. |
| **Ruban** | Bandeau supérieur d’Access regroupant les onglets et les commandes contextuelles. |
| **Volet de navigation** | Panneau latéral listant tous les objets de la base de données (tables, requêtes, formulaires, états, etc.). |
## Exercices d'application corrigés
### Exercice 1 – Création d’une base de gestion de bibliothèque
**Consigne** : Créer une base `Bibliotheque.accdb` contenant deux tables :
1. `Auteurs` (`CodeAuteur` PK, `Nom`, `Prenom`, `Nationalite`).
2. `Livres` (`ISBN` PK, `CodeAuteur` FK, `AnneeEdition`, `Prix`, `Disponible` Oui/Non).
Établir une relation d’intégrité référentielle entre `Auteurs` et `Livres`. Saisir trois auteurs et cinq livres.
**Corrigé** :
1. Lancer Access → Nouveau → Base de données vierge → nommer `Bibliotheque.accdb` → Créer.
2. Onglet **Création** → **Table Création**.
- Table `Auteurs` : ajouter les champs, définir `CodeAuteur` (Numéro entier) comme clé primaire.
- Table `Livres` : ajouter les champs, définir `ISBN` (Texte Court, taille 13) comme clé primaire, `CodeAuteur` (Numéro entier) comme champ ordinaire.
3. Enregistrer chaque table (`Ctrl + S`).
4. Onglet **Outils de base de données** → **Relations**. Ajouter `Auteurs` et `Livres`. Glisser `Auteurs.CodeAuteur` sur `Livres.CodeAuteur`. Dans la boîte de dialogue, cocher **Appliquer l’intégrité référentielle** et **Cascade de mise à jour des champs liés**. Cliquer **Créer**.
5. Ouvrir chaque table en feuille de données et saisir les enregistrements (ex. Auteurs : 1, “Kamga”, “Jean”, “Cameroun”; Livres : “9789991234567”, “Le Petit Prince”, 1, 2020, 2500, Oui).
6. Vérifier que la saisie d’un livre avec un `CodeAuteur` inexistant est refusée (intégrité référentielle).
### Exercice 2 – Formulaire de saisie de commandes clients
**Consigne** : À partir de la base `GestionStock.accdb` (tables `Clients`, `Articles`, `Commandes`, `LignesCommande`), créer un formulaire `FrmSaisieCommande` permettant :
- de choisir un client via une liste modifiable,
- de saisir la date de commande (zone de texte avec format Date/Heure),
- d’ajouter plusieurs lignes d’article (sous‑formulaire en mode feuille de données) avec choix de l’article (liste modifiable), quantité et calcul du sous‑total (PrixUnitaire * Quantité).
Imprimer le formulaire en aperçu avant impression.
**Corrigé** :
1. Ouvrir la base `GestionStock.accdb`.
2. Créer le formulaire principal :
- Onglet **Création** → **Assistant formulaire** → choisir la requête `ReqClientsAvecNom` (ou la table `Clients`) → sélectionner les champs `CodeClient`, `NomClient`, `Telephone` → disposition **Colonnaire** → style **Office** → nommer `FrmSaisieCommande` → Terminer.
3. En mode création du formulaire :
- Ajouter une **liste déroulante** pour le client : définir `Row Source` = `SELECT CodeClient, NomClient FROM Clients ORDER BY NomClient;` ; `Bound Column` = 1 ; `Column Widths` = `0cm;4cm`.
- Ajouter une zone de texte `txtDateCmd` : propriété `Format` = `Date Courte`.
- Ajouter un bouton **Ajouter une ligne** (optionnel) qui ouvre le sous‑formulaire en mode ajout.
4. Créer le sous‑formulaire :
- Onglet **Création** → **Assistant formulaire** → choisir la table `LignesCommande` → sélectionner `CodeLigne`, `CodeArticle` (FK), `Quantite`, `PrixUnitaire` (affiché en lecture seule), `SousTotal` (calculé) → disposition **Feuille de données** → nommer `FrmLignesCommandeSF` → Terminer.
- Dans le sous‑formulaire, remplacer la zone de texte `CodeArticle` par une liste modifiable : `Row Source` = `SELECT CodeArticle, Designation FROM Articles ORDER BY Designation;` ; `Bound Column` = 1 ; `Column Widths` = `0cm;6cm`.
- Ajouter une zone de texte calculée `txtSousTotal` : propriété `Source contrôle` = `[PrixUnitaire]*[Quantite]` ; `Format` = `Monnaie`.
5. Relier le sous‑formulaire au formulaire principal :
- Ouvrir `FrmSaisieCommande` en mode création → sélectionner le sous‑formulaire → feuille de propriétés → onglet **Données** → `Link Master Fields` = `CodeClient` ; `Link Child Fields` = `CodeClient` (si la table `LignesCommande` possède ce champ) ou bien créer un champ `CodeCommande` dans `LignesCommande` et le lier à un champ caché du formulaire principal.
6. Tester le formulaire : choisir un client, saisir la date, ajouter plusieurs lignes, vérifier que le sous‑total se met à jour.
7. Aperçu avant impression : onglet **Fichier** → **Imprimer** → **Aperçu avant impression** ; ajuster les marges si nécessaire ; fermer l’aperçu.
## Erreurs fréquentes et règles de sécurité
| # | Erreur fréquente | Conséquence | Règle de prévention / bonne pratique |
|---|------------------|-------------|--------------------------------------|
| 1 | Oublier de définir une clé primaire sur une table | Duplication d’enregistrements, difficultés à établir des relations | Toujours désigner un champ unique (ex. code, numéro auto‑incrément) comme clé primaire dès la création de la table. |
| 2 | Saisir des données non conformes au type (ex. texte dans un champ Nombre) | Message d’erreur, enregistrement rejeté, interruption de la saisie | Utiliser les règles de validation et les masques de saisie ; former les utilisateurs aux types de champs attendus. |
| 3 | Négliger l’intégrité référentielle lors de la création d’une relation | Enfant orphelin, incohérences lors de la suppression ou mise à jour | Cocher **Appliquer l’intégrité référentielle** et envisager la cascade uniquement si le métier le justifie. |
| 4 | Modifier directement la propriété `Control Source` d’un contrôle lié à un champ sans mettre à jour la liaison | Affichage de données erronées ou champs vides | En mode création, vérifier que la propriété `Control Source` pointe bien vers le champ souhaité ; utiliser le générateur de champs si besoin. |
| 5 | Imprimer un formulaire sans passer par l’aperçu avant impression | Découpage de contrôles, gaspillage de papier, rendu illisible | Toujours utiliser **Aperçu avant impression** pour contrôler la mise en page ; ajuster les marges et l’échelle si nécessaire. |
| 6 | Laisser le formulaire en mode création accessible aux utilisateurs finaux | Risque de modification accidentelle de la structure, perte de données | Distribuer uniquement les fichiers `.accdb` en mode exécution ou créer un fichier `.accde` (exécutable) pour les utilisateurs ; protéger le mode création par un mot de passe si nécessaire. |
---
Fin du cours.
Quiz du chapitre
10 questions — vérifie chaque réponse pour voir l'explication.