Chapitre 5
PRATIQUE GESTION DE BASE DE DONNEES SUR MICROSOFT ACCESS (partie 2/2)
Lecture : 13 minQuiz de 10 questions
## Objectifs et prérequis
**Objectifs** : À la fin de ce chapitre, l’élève sera capable de :
- créer une requête simple ou paramétrée dans Microsoft Access ;
- définir l’option d’affichage (feuille de données, création, SQL, diagramme) d’une requête ;
- imprimer une requête avec mise en page adaptée ;
- créer un état instantané à partir d’une table ou d’une requête ;
- réaliser un état guidé par l’assistant, en choisissant regroupement, tri et mise en page ;
- ajouter et configurer des contrôles liés ou non liés dans un état.
**Prérequis** : maîtriser la création et la modification de tables, la saisie de données, les types de données (texte, numérique, date/monnaie, oui/non) et la navigation de base dans l’environnement Access (ruban, volet de navigation).
> **Définition** : Une *requête* est un objet Access qui extrait, filtre, trie ou calcule des données provenant d’une ou plusieurs tables selon des critères spécifiés.
> **Définition** : Un *état* est un objet Access destiné à la présentation imprimable ou à l’écran de données structurées, souvent agrégées et mises en forme.
## Introduction contextualisée
Dans les entreprises camerounaises – qu’il s’agisse d’une pharmacie à Douala, d’un lycée technique à Yaoundé ou d’une PME de transformation agroalimentaire à Bafoussam – la gestion informatisée des informations clients, stocks, ventes ou notes de frais est devenue incontournable. Microsoft Access, intégré à la suite Office, permet de concevoir rapidement des applications de gestion de base de données sans programmation avancée. Savoir exploiter les requêtes et les états constitue donc une compétence clé pour le technicien supérieur en gestion, car cela permet de produire les rapports d’activité, les tableaux de bord et les extraits de données nécessaires à la prise de décision.
## I. Les requêtes
### 1. Créer une requête
Il existe trois méthodes principales :
| Méthode | Quand l’utiliser | Étapes essentielles |
|---------|------------------|---------------------|
| **Assistant** | Débutant, besoin rapide | 1. Onglet *Créer* → *Assistant de requête* → choisir *Requête sélection* → sélectionner la table/source → choisir les champs → définir le critère (optionnel) → nommer la requête → terminer. |
| **Création** | Contrôle total sur les joints, les fonctions | 1. Onglet *Créer* → *Création de requête* → double‑cliquer sur les tables dans la fenêtre *Afficher la table* → glisser les champs souhaités dans la grille → éventuellement définir des jointures → enregistrer. |
| **SQL** | Utilisateurs avancés, requêtes complexes | 1. Onglet *Créer* → *Requête en mode SQL* → taper l’instruction SQL → exécuter (F5) → enregistrer. |
**Exemple professionnel** : Une entreprise de distribution de médicaments à Yaoundé souhaite lister tous les produits dont la date de péremption est inférieure à 30 jours.
- En mode *Création* : on sélectionne la table *Produits*, on glisse les champs *Référence*, *Désignation*, *DatePéremption*.
- Dans la ligne *Critères* du champ *DatePéremption* on saisit : `>=Date() And <Date()+30`.
- On exécute (point d’exclamation) → la feuille de données affiche uniquement les produits concernés.
> **Règle** : Toujours enregistrer la requête avant de fermer le mode Création afin de préserver les critères et les champs sélectionnés.
### 2. Définir l’option d’affichage dans une requête
Access propose quatre modes d’affichage, accessibles depuis le ruban *Accueil* → *Vues* :
- **Feuille de données** : résultat sous forme de tableau, idéal pour vérifier rapidement les enregistrements retournés.
- **Création** : permet de modifier la structure (champs, jointures, critères, tri).
- **SQL** : affiche l’instruction SQL générée ; utile pour l’apprentissage ou le débogage.
- **Diagramme** : représentation graphique des tables et des liens (jointures) ; pratique pour visualiser les relations complexes.
**Options de tri et de critère** : Dans la grille de création, chaque colonne possède une ligne *Tri* (Croissant, Décroissant) et une ligne *Critère*. On peut combiner plusieurs critères avec les opérateurs logiques **ET** (par défaut) ou **OU** (en utilisant la ligne *ou*).
**Exemple chiffré** : On veut obtenir la liste des factures du mois de mars 2024 dont le montant HT dépasse 150 000 FCFA, triées par date décroissante.
- Champ *DateFacture* : critère `Between #01/03/2024# And #31/03/2024#`.
- Champ *MontantHT* : critère `>150000`.
- Ligne *Tri* du champ *DateFacture* : *Décroissant*.
> **Astuce** : Utiliser les caractères dièse `#` pour délimiter les valeurs de type date/heure dans les critères.
### 3. Imprimer une requête
L’impression d’une requête se fait comme pour tout objet Access :
1. Ouvrir la requête en *Feuille de données*.
2. Onglet *Fichier* → *Imprimer* → *Aperçu avant impression* pour vérifier la mise en page (marges, orientation, en‑tête/pied de page).
3. Ajuster les paramètres : *Orientation* (Portrait/Paysage), *Taille du papier* (A4, Letter), *Échelle* (Ajuster à une page).
4. Cliquer sur *Imprimer* ou *Imprimer rapidement*.
**Exemple** : Après avoir créé la requête des factures mars 2024, l’imprimer en mode Paysage pour que toutes les colonnes (Numéro, Client, Date, MontantHT, TVA, TTC) tiennent sur une seule page A4.
> **Règle de sécurité** : Toujours faire un aperçu avant impression afin d’éviter le gaspillage de papier et de détecter d’éventuelles colonnes tronquées.
## II. Les états
### 1. Créer un état instantané
Un état instantané est généré en un clic à partir d’une table ou d’une requête sélectionnée.
**Procédure** :
1. Dans le volet de navigation, cliquer sur la table ou la requête source (ex. *Requête_FacturesMars2024*).
2. Onglet *Créer* → groupe *États* → cliquer sur *État*.
3. Access crée un état contenant tous les champs de la source, disposés en colonne, avec un en‑tête de page et un pied de page par défaut.
4. Enregistrer l’état (ex. *État_FacturesMars2024*).
> **Définition** : Un *état instantané* est un état généré automatiquement sans passer par l’assistant, utile pour une vérification rapide des données.
### 2. Créer un état en mode assistant
L’assistant guide l’utilisateur à travers plusieurs étapes : choix de la source, regroupement, tri, mise en page et style.
**Étapes** :
1. Onglet *Créer* → *Assistant d’état*.
2. **Étape 1 – Source** : sélectionner la table ou la requête (ex. *Requête_FacturesMars2024*).
3. **Étape 2 – Champs** : déplacer les champs souhaités de la liste *Disponibles* vers *Sélectionnés*.
4. **Étape 3 – Regroupement** (optionnel) : choisir un champ pour regrouper les données (ex. *Client*).
5. **Étape 4 – Tri** : spécifier l’ordre de tri (ex. *DateFacture* décroissant).
6. **Étape 5 – Mise en page** : choisir l’orientation (Portrait/Paysage) et l’ajustement (Ajuster à une page).
7. **Étape 6 – Style** : sélectionner un style prédéfini (Sobre, Élégant, Rapport).
8. **Étape 7 – Nom** : donner un titre à l’état (ex. *État_Mensuel_FacturesMars2024*) et choisir *Oui* pour ouvrir l’état après création.
9. Cliquer sur *Terminer*.
**Exemple professionnel** : Un service comptable d’une entreprise de construction à Garoua doit produire chaque mois un état des dépenses par chantier, regroupé par chantier et trié par date. L’assistant permet d’obtenir rapidement cet état avec un sous‑total par chantier et un total général.
> **Règle** : Lors du regroupement, vérifier que le champ utilisé possède des valeurs répétées ; sinon le regroupement n’aura aucun effet.
### 3. Ajouter des contrôles
Un état peut être enrichi de contrôles liés (liés à un champ de la source) ou non liés (statiques).
| Type de contrôle | Exemple d’utilisation | Propriétés essentielles |
|------------------|-----------------------|--------------------------|
| **Zone de texte liée** | Afficher le champ *MontantTTC* | *SourceControl* = `[MontantTTC]`, *Format* = Monnaie, *Visible* = Oui |
| **Liste déroulante liée** | Permettre à l’utilisateur de choisir un filtre (non directement dans l’état, mais dans un formulaire appelant) | *SourceControl* = requête de valeurs, *LimiteÀListe* = Oui |
| **Case à cocher liée** | Indiquer si une facture est réglée (Oui/Non) | *SourceControl* = `[Reglee]`, *Alignement* = Centre |
| **Étiquette (non liée)** | Titre de l’état, logo de l’entreprise | *Legende* = “Rapport mensuel – Société XYZ”, *Police* = Gras, Taille 14 |
| **Image (non liée)** | Logo ou signature | *SourceImage* = chemin du fichier, *ModeTaille* = Zoom |
| **Ligne / Rectangle** | Séparer visuellement les sections | *Épaisseur*, *Couleur* |
**Contrôle calculé** : Pour afficher le total TTC de chaque groupe, on peut ajouter une zone de texte non liée dont la *SourceControl* est une expression, par exemple `=Sum([MontantTTC])`. On place ce contrôle dans le pied de groupe du champ *Client* pour obtenir le sous‑total par client.
**Exemple** : Dans l’état *État_Mensuel_FacturesMars2024*, on ajoute en pied de groupe *Client* une zone de texte avec l’expression `=Sum([MontantTTC])` et on définit sa propriété *Format* sur Monnaie. Le pied de page de l’état contient ensuite une zone de texte avec `=Sum([MontantTTC])` pour le total général.
> **Astuce** : Utiliser la propriété *Running Sum* (Somme cumulative) pour obtenir un total partiel qui s’accumule au fil des lignes lorsqu’on travaille sans regroupement.
> **Règle de sécurité** : Toujours tester l’état en mode *Aperçu* avant impression afin de vérifier que les contrôles calculés retournent les valeurs attendues et que aucun champ ne dépasse les marges.
## III. Synthèse du chapitre
- **Requête** : objet permettant d’extraire, filtrer, trier ou calculer des données ; trois modes de création (Assistant, Création, SQL) ; quatre affichages (Feuille de données, Création, SQL, Diagramme) ; impression via aperçu avant impression.
- **État instantané** : génération rapide d’un état à partir d’une table/requête, sans personnalisation avancée.
- **État assistant** : guidé pas à pas (source, champs, regroupement, tri, mise en page, style) ; idéal pour des états structurés avec sous‑totaux et mise en forme professionnelle.
- **Contrôles** : liés (zone de texte, liste déroulante, case à cocher) ou non liés (étiquette, image, ligne) ; propriétés clés : *SourceControl*, *Format*, *Visible*, *Running Sum*.
- **Bonnes pratiques** : enregistrer fréquemment, utiliser l’aperçu avant impression, vérifier les critères et les jointures, éviter les champs non indexés dans les critères de requête pour préserver les performances.
## Glossaire
> **Requête sélection** : type de requête qui retourne un sous‑ensemble d’enregistrements selon des critères.
> **Jointure** : opération qui associe des enregistrements de deux tables selon un champ commun.
> **Critère** : expression qui limite les enregistrements retournés par une requête (ex. `>1000`).
> **Tri** : ordre de classement des résultats (croissant ou décroissant).
> **État** : objet Access destiné à la présentation imprimable ou à l’écran de données structurées.
> **Regroupement** : opération qui organise les données d’un état en groupes selon un champ, permettant l’affichage de sous‑totaux.
> **Contrôle lié** : contrôle dont la valeur provient directement d’un champ de la source de l’état ou du formulaire.
> **Contrôle non lié** : contrôle statique (étiquette, image, ligne) dont la valeur ne provient pas d’une source de données.
> **Expression** : formule utilisée dans un contrôle calculé (ex. `=Sum([MontantTTC])`).
> **Aperçu avant impression** : mode permettant de visualiser la mise en page d’un état ou d’une requête avant l’impression physique.
## Exercices d'application corrigés
### Exercice 1 – Requête de suivi de stock périmé
**Consigne** : Une pharmacie de Ngaoundéré possède une table *Stock* avec les champs : *RefProduit* (Texte), *Désignation* (Texte), *QteEnStock* (Entier), *DatePeremption* (Date/Heure). Créer une requête qui liste les produits dont la date de péremption est antérieure à aujourd’hui et dont le stock est supérieur à zéro. Trier les résultats par date de péremption croissante.
**Corrigé** :
1. Onglet *Créer* → *Création de requête*.
2. Dans la boîte de dialogue *Afficher la table*, sélectionner la table *Stock* → *Ajouter* → *Fermer*.
3. Glisser les champs *RefProduit*, *Désignation*, *QteEnStock*, *DatePeremption* dans la grille de création.
4. Dans la ligne *Critère* du champ *DatePeremption* saisir : `<Date()`.
5. Dans la ligne *Critère* du champ *QteEnStock* saisir : `>0`.
6. Dans la ligne *Tri* du champ *DatePeremption* choisir *Croissant*.
7. Cliquer sur le point d’exclamation pour exécuter → vérifier que seuls les produits périmés en stock apparaissent.
8. Enregistrer la requête sous *Req_StockPerime*.
### Exercice 2 – État mensuel des ventes par région
**Consigne** : Une société de distribution de boissons à Douala possède une requête *VentesMensuelles* contenant les champs : *Region* (Texte), *DateVente* (Date/Heure), *MontantHT* (Monétaire), *TVA* (Monétaire). Créer un état qui présente, pour chaque région, le total HT, la total TVA et le total TTC, avec un total général en pied de page. Utiliser l’assistant d’état.
**Corrigé** :
1. Onglet *Créer* → *Assistant d’état*.
2. Étape 1 – Source : sélectionner la requête *VentesMensuelles* → *Suivant*.
3. Étape 2 – Champs : déplacer *Region*, *DateVente*, *MontantHT*, *TVA* vers la zone *Sélectionnés* → *Suivant*.
4. Étape 3 – Regroupement : choisir *Region* comme champ de regroupement → *Suivant*.
5. Étape 4 – Tri : dans la liste *Tri par*, sélectionner *DateVente* puis choisir *Croissant* → *Suivant*.
6. Étape 5 – Mise en page : choisir *Portrait* et ajuster à une largeur de page → *Suivant*.
7. Étape 6 – Style : sélectionner *Élégant* → *Suivant*.
8. Étape 7 – Nom : taper *Etat_VentesMensuellesParRegion* ; laisser l’option *Ouvrir l’état après création* cochée → *Terminer*.
9. L’état s’ouvre en mode *Aperçu*. En mode *Création* de l’état :
- Dans le pied de groupe *Region*, ajouter trois zones de texte liées :
* `=Sum([MontantHT])` (format Monnaie) → label “Total HT région”.
* `=Sum([TVA])` (format Monnaie) → label “Total TVA région”.
* `=Sum([MontantHT]+[TVA])` (format Monnaie) → label “Total TTC région”.
- Dans le pied de page de l’état, ajouter trois zones de texte similaires avec les mêmes sommes pour obtenir les totaux généraux.
10. Enregistrer l’état, puis passer en *Aperçu avant impression* pour vérifier l’alignement et les sauts de page.
11. Imprimer si nécessaire.
## Erreurs fréquentes et règles de sécurité
| # | Erreur fréquente | Conséquence | Règle de prévention / bonne pratique |
|---|------------------|-------------|--------------------------------------|
| 1 | Oublier d’enregistrer la requête après modification des critères. | Les changements sont perdus à la fermeture de l’objet. | Toujours cliquer sur l’icône *Enregistrer* (ou Ctrl+S) avant de quitter le mode Création. |
| 2 | Utiliser un critère sur un champ non indexé (ex. texte long) dans une requête portant sur plusieurs dizaines de milliers d’enregistrements. | Temps de réponse très lent, risque de dépassement de délai. | Indexer les champs fréquemment utilisés dans les critères (clic droit sur le champ → *Indexé* → *Oui (dupliqués OK)*). |
| 3 | Lancer l’impression sans passer par l’aperçu avant impression. | Gaspi de papier, colonnes tronquées ou mise en page inadaptée. | Toujours vérifier l’aperçu, ajuster les marges et l’orientation avant d’imprimer. |
| 4 | Ajouter un contrôle lié dont la *SourceControl* pointe vers un champ inexistant ou mal orthographié. | Le contrôle affiche #Erreur# à l’exécution. | Vérifier l’orthographe exacte du nom du champ dans la table/source ; utiliser la liste de déroulage de la propriété *SourceControl* pour éviter les fautes. |
| 5 | Modifier directement une table en mode *Feuille de données* alors qu’un état basé sur cette table est ouvert en aperçu. | Risque de corruption ou de perte de synchronisation des données affichées. | Fermer tous les états et formulaires qui utilisent la table avant de la modifier en mode feuille de données, ou travailler sur une copie de la table pour les tests. |
| 6 | Négliger de définir un format monétaire sur un contrôle calculé destiné à afficher des montants FCFA. | Les valeurs apparaissent sans séparateur de milliers, rendant la lecture difficile. | Dans la propriété *Format* du contrôle, sélectionner *Monnaie* ou personnaliser avec `#,##0 "FCFA"`. |
---
*Fin du cours de référence.*
*Ce document respecte le programme officiel MINESEC/IGE pour la série FAM, niveau Première, approche par compétences.*
Quiz du chapitre
10 questions — vérifie chaque réponse pour voir l'explication.