|
|
Outils et
méthodes bureautiques |
|
|
Site de l’auteur |
·
Consultez le corrigé de la grille
d’autoévaluation
·
Consultez le corrigé de la grille
d’autoévaluation
·
Consultez le corrigé de la
grille d’autoévaluation
·
Consultez le corrigé de la
grille d’autoévaluation
·
Consultez le corrigé de la
grille d’autoévaluation
·
Téléchargez le corrigé de l’application,
au niveau de la page 109 :
la base de données FacturationFinEtape5.mdb,
avec quatre tables, trois relations avec contrôle d’IR, trois formulaires, un
sous-formulaire, deux requêtes, un état, quelques programmes VBA…
·
Télécharger
la dernière version de l’AMI,
aide-mémoire informatique
·
Télécharger l’exemple de dossier de l’étudiant, 40
pages (attention : 2,6 Mo)
Je vérifie que j’ai bien progressé…
|
Je
sais … CORRIGÉ |
Commandes et
procédures |
|
Expliquer ce qu’est un identifiant, et son utilité |
L’identifiant (ou clef primaire) d’une table est un
champ sans doublons qui permet d’identifier à coup sûr une et une
seule ligne (un enregistrement) de la table. Si je connais une valeur de l’identifiant
N°Client (la valeur "B123", par exemple), j’ai accès à coup sûr à
un et un seul client (le client "Priscilla Merluchon", par
exemple). |
|
Résumer les principales Propriétés des champs d’une table dans la colonne Description, et expliquer l’utilité de cette démarche |
Il est conseillé de noter (recopier, résumer)
tous les réglages de chaque champ dans la colonne Description pour créer
une vue d’ensemble, une synthèse des propriétés de la table sur un
seul écran, sans avoir à cliquer quelque part. Sans cette astuce, on est
presque aveugle pour relire la structure des tables : il faut
sélectionner une ligne pour en lire les propriétés, et on ne voit qu’une
ligne à la fois, qu’un seul champ. |
|
Repérer les cas où le type Numérique ou Monétaire est utile |
Il faut deviner qu’un champ va
probablement servir à des calculs pour lui donner un type numérique, au
sens large : pour rendre ces calculs possibles, il faudra alors donner, · soit
le type Numérique, au sens strict d’Access, · soit
le type Monétaire, qui est numérique également (au sens large :
il permet de faire des calculs sur les valeurs qu’il mémorise), et même des
calculs plutôt plus rapides que ce que permet le type Numérique. |
|
Expliquer pourquoi un type Texte peut être très utile pour un
code identifiant |
Le type Texte donne une grande liberté
sur les futurs contenus du champ : on pourra y loger du texte, bien sûr,
mais aussi des chiffres, des caractères spéciaux (ponctuation, etc.). On
appelle parfois Alphanumérique le type texte : c’est plus
parlant. En choisissant le type Texte, on garde de la liberté pour
décider, un jour, de mettre des lettres dans le code (Quinc28 au lieu de 28,
par exemple). |
|
Expliquer, pour les tables, les différences entre le mode
Création et le mode Feuille de données |
Dans les tables, le mode Création permet
de modifier leur structure : les propriétés des champs, alors que
le mode Feuille de données permet de modifier le contenu des
tables : saisir ou corriger les valeurs mémorisées dans les champs,
ligne par ligne. |
|
Expliquer le fonctionnement de la
touche Échap
(Esc)
pendant la saisie |
En cours de saisie d’un champ, un petit crayon
est affiché à gauche de la ligne (l’enregistrement) en cours. La première frappe sur Échap
annule la saisie du champ en cours, mais n’annule pas la saisie des
éventuels autres champs modifiés sur la ligne courante. Par contre, une deuxième pression sur Échap
annule les modifications de tous les champs sur la ligne en cours. |
|
Expliquer l’intérêt des formulaires |
Pour les utilisateurs,
les formulaires permettent de présenter une ligne de table toute seule sur un
écran, avec une présentation en fiche plutôt qu’en ligne, ce qui évite
les confusions entre lignes et rend l’écran de saisie / consultation plus
léger, moins chargé, plus agréable. Par ailleurs, pour le programmeur, les
formulaires offrent de nombreux outils d’assistance et de contrôle
de la saisie, qui n’existent pas dans les tables. |
|
Expliquer, pour les formulaires, les différences entre le
mode Création et le mode Formulaire |
Dans les formulaires, le mode Création
permet de modifier leur structure, l’agencement des contrôles (les
contrôles sont les objets qui composent un formulaire), la mise en forme,
l’apparence des contrôles, alors que
le mode Formulaire permet d’utiliser le formulaire,
c’est-à-dire de voir à l’écran le résultat de tous les réglages opérés en
mode Création. |
|
Donner des exemples de contrôles de formulaire |
Une Étiquette, une Zone de texte… |
|
Expliquer les différences entre les Zones de texte et les Étiquettes |
Une Étiquette sert à afficher un texte
constant, |
|
Déplacer
un contrôle sans déplacer le contrôle associé |
Glisser sur sa grosse poignée noire, celle
qui est affichée en haut à droite du contrôle. |
|
Dimensionner un contrôle |
Glisser sur une poignée (un des huit
carrés noirs qui bordent le contrôle). |
|
Maîtriser au moins 3 techniques pour sélectionner plusieurs contrôles |
· Clic,
puis MAJ clics… · Glisser
pour dessiner un rectangle de sélection qui touche tous les contrôles
à sélectionner, pris « au lasso ». · Cliquer
ou glisser sur une règle blanche graduée, pou sélectionner tous les
contrôles placés en regard des points visés. |
|
Ajouter
ou retirer un contrôle à un groupe sélectionné |
MAJ clic… |
|
Afficher
les Propriétés du Formulaire |
Double cliquer sur le coin haut gauche
gris noir du formulaire. |
|
Utiliser quelques bonnes touches pendant la saisie |
Entrée
ou Tab
ou Flèches
pour avancer de champ en champ. Échap
une fois pour abandonner la saisie du champ en cours. Échap
une deuxième fois pour annuler la correction de la ligne entière. |
|
Changer
l’aide affichée sur la Barre d’état quand
un contrôle est actif, et en expliquer l’intérêt |
Afficher les propriétés du contrôle (en double cliquant
dessus par exemple), sélectionner la propriété Texte barre d’état, et
taper le texte voulu. L’intérêt est pour l’utilisateur de votre
application : il ne connaît pas aussi bien que vous les possibilités et
les contraintes. Il est question ici de l’aider en l’informant, champ par
champ, précisément, clairement, en lui évitant le doute qui pourrait le
gêner dans son travail. |
|
Créer
un nouvel enregistrement |
Cliquer sur le bouton |
|
Afficher un formulaire en Feuille de données |
Cliquer sur l’outil |
|
Déplacer
une colonne de formulaire, en Feuille de données |
Cliquer d’abord sur le titre de la colonne pour
la sélectionner toute entière, relâcher la souris, puis cliquer à nouveau sur
ce titre et glisser vers la destination. |
|
L’intérêt
et les inconvénients du type NumAuto |
L’intérêt du type NumAuto est de prendre
en charge le problème de l’attribution automatiques de numéros sans oubli
ni doublon, mais le premier inconvénient est la rigidité de
l’outil : aucune manipulation n’est autorisée, c’est lui qui décide, et
les hommes n’ont plus voix au chapitre… :o) Mais pour tous les n° non significatifs
(les numéros de ligne de facture, par exemple), ce type de champ
convient tout à fait. Mais un autre problème vient de la règle qui interdit
de réutiliser un numéro ayant déjà été donné par le passé : cette
règle crée des trous dans la suite des numéros attribués chaque fois
que la saisie d’un enregistrement est abandonnée en cours de création. |
|
L’intérêt
et les inconvénients des champs indexés |
Les tris (mises en ordre) et les extractions
(sélections) prennent du temps sur les grandes tables. Indexer les champs
permet d’accélérer sensiblement ces opérations, mais au prix d’un encombrement
supplémentaire sur le disque (les tables d’index sont des paires de
colonnes de la longueur de la table de base) et d’un petit temps
supplémentaire lors de chaque intervention sur un enregistrement (Access
écrit dans les tables d’index en même temps que dans la table de base, pour
avoir toujours des index à jour). |
|
L’intérêt
et les inconvénients des masques de saisie |
Les masques de saisie permettent d’assister
la saisie et de la contrôler. Si on utilise uniquement le clavier,
ils sont assez pratiques. Mais si on utilise la souris, ils
sont très gênants. Il ne faut en programmer que pour des utilisateurs
« professionnels de la saisie » qui connaissent bien leur clavier. |
|
Passer
à la ligne pendant la saisie dans un champ |
Ctrl
Entrée |
|
Me
mettre à la place de l’opérateur pour lui
simplifier le travail au mieux |
Imaginer que je suis l’utilisateur, tester
l’application en me mettant exactement dans les mêmes conditions que lui, en
essayant d’imaginer les doutes qu’il pourrait avoir, en rédigeant des textes
d’aide clairs pour lever ces doutes… |
|
Bloquer
un champ à la saisie : rendre impossible
la sélection, et le signaler visuellement pour aider l’opérateur à prévoir ce
comportement |
Donner au contrôle les propriétés Activer :
non et Verrouillé : oui. Et pour aider à anticiper ce blocage, changer
l’apparence des contrôles ainsi bloqués : ne pas les laisser comme
les autres, leur retirer la couleur du fond et la couleur des bordures :
les rendre transparents. |
|
Aligner
des contrôles entre eux |
Sélectionner les contrôles (avec des MAJ clics ou
au lasso) Puis cliquer droit, Aligner… sur l’un d’entre
eux. Nota : si on aligne à droite, c’est le
contrôle placé le plus à droite qui servira de repère d’alignement à tous les
autres. Si on aligne à gauche, tous les contrôles s’aligneront sur le
contrôle placé le plus à gauche. |
|
Trier
des nombres
saisis en type Texte |
Les règles de tri des nombres sont différentes
des règles de tri des textes. Pour trier des nombres ayant le type Texte,
il faut égaliser leur longueur en remplissant avec des zéros l’espace à
gauche pour que tous les « textes-nombres » aient la même longueur,
par exemple trois caractères : 001, 002… 010, 011, 099, 100, 999. STOP. Si on a des nombres plus grands que
999, il fallait mettre un zéro de plus devant tous les nombres inférieurs à
1000 : 0001… 0010… 0999, 1000, 1001… 1567, 1568… 9999. STOP. |
|
Expliquer les avantages du formulaire sur la table |
Le formulaire permet d’abord de ne voir qu’une
ligne à la fois, sous forme de fiche : il permet de se concentrer,
il évite de confondre deux lignes, il allège l’écran en n’affichant pas des
données actuellement inutiles. Par ailleurs, le formulaire permet de guider
et contrôler la saisie avec des outils beaucoup plus puissants que ce
qu’on trouve dans les tables. Les formulaires permettent aussi de calculer
des informations qui ne se trouvent pas dans les tables. Enfin, les formulaires permettent d’afficher les
champs de plusieurs tables ou plusieurs requêtes dans un seul et même
écran. C’est donc un outil qui permet des affichages synthétiques,
résumés et riches à la fois. |
|
Ouvrir une fenêtre d’édition pour corriger un très long texte |
MAJ F2 (raccourci très utile !) |
|
Déplacer
et dimensionner les contrôles avec le clavier |
Déplacer un contrôle (ou
un groupe !) : CTRL MAJ Flèche Raccourci formidable ! En effet, sous Access, le Maj glisser,
pour déplacer en respectant les alignements, ne fonctionne pas !
Ce qui est une terrible lacune : chaque
fois qu’on glisse avec la souris, on détruit les alignements,
même avec l’habitude de la souris. Avec CTRL MAJ Flèche,
on a LA solution pour déplacer vite et bien. On arrête de perdre du temps
avec des bêtises, à réaligner ce qu’on vient de désaligner par accident. Dimensionner
avec le clavier = MAJ
Flèche. |
Je vérifie que j’ai bien progressé…
|
Je sais …… CORRIGÉ |
Commandes et
procédures |
|
Repérer les clefs externes par un signe
distinctif |
Placer un dièse # dans le nom des clefs
externes est une convention essentielle pour augmenter la lisibilité
des schémas relationnels. On prévoit ceci en mode Création
qui est le mode du réglage de la structure des tables. Pour saisir un dièse #, utiliser la touche ALTGR,
à droite de la barre d’espace, et la touche 3 du pavé alphabétique. |
|
Expliquer le rôle des clefs externes |
Une clef externe mémorise ce qui relie deux tables : une valeur d’identifiant connue à coup sûr.
Elle se souvient que pour une ligne d’une table, on a une et une seule autre
ligne d’une deuxième table. Ce lien vital s’appelle d’un nom obscur mais
irremplaçable : c’est une dépendance fonctionnelle (DF). Chaque clef externe dans une table (il peut y
en avoir beaucoup), pointe vers une et une seule ligne d’une autre
table : la clef externe, qu’on appelle parfois clef étrangère
(mais qui n’a rien à voir avec les clefs secondaires, ne pas confondre), mémorise
une DF vers une autre table. |
|
Programmer
une liste déroulante sur chaque clef externe |
En mode Création sur la table,
sélectionner la ligne de la clef externe et choisir le type Assistant
Liste de choix… Répondre aux questions de l’assistant en prenant
bien garde à : · démasquer
la première colonne (clef primaire de la table associée) · contrôler
que la propriété Limiter à liste de la clef externe est bien
sur Oui · Remettre
le dièse # que Access 97 ou |
|
Expliquer l’intérêt de la liste déroulante programmée sur les clefs externes |
La clef externe est faite pour contenir une
des valeurs de l’identifiant d’une autre table. Attention, confusion fréquente : la clef
externe n’est pas l’identifiant de l’autre table : elle est la mémoire
d’une des valeurs de l’identifiant visé. Elle ne peut pas contenir autre chose (qu’une
valeur prise dans la première colonne de la table liée). On peut donc
prévoir une liste des saisies possibles : c’est la liste des valeurs
de l’identifiant visé. La liste déroulante facilite la saisie en
dispensant l’opérateur de connaître tous les identifiants par cœur (…) :
elle permet de montrer à l’opérateur les codes disponibles et les libellés
associés, ce qui fiabilise la saisie : l’opérateur a le moyen de
bien contrôler sa saisie. Access est donc ici beaucoup plus fort
qu’Excel qui ne sait afficher des listes déroulantes qu’avec une
colonne unique : seule une valeur (le code) est listée dans la liste
déroulante de Données Validation… Ce n’est pas lisible du tout, et
c’est même parfois inutilisable… |
|
Éviter
les espaces dans les noms de champ et expliquer
l’intérêt de ce choix |
Access permet d’utiliser les espaces dans le nom
des champs. On en a parfaitement le droit.
Mais c’est déconseillé car cette possibilité se paiera plus tard avec
la saisie obligatoire de crochets partout dans l’application. Il est astucieux d’éviter les espaces et de
rester lisible en n’utilisant que des minuscules et des initiales
majuscules au début des mots : |
|
Mémoriser
une relation durable entre deux tables |
Ouvrir la fenêtre des relations avec Outils,
Relations… Si les tables n’apparaissent pas, faire
apparaître les tables à relier avec Relations, Afficher la table… Pour créer la relation, glisser précisément de
la clef externe vers l’identifiant (ou l’inverse). Cocher toujours le contrôle d’IR
(essentiel), et la MAJ en cascade (sans
danger). Ne cocher Suppression en cascade
qu’en cas d’absolue nécessité, ce qui arrive de
temps en temps. |
|
Expliquer l’intérêt de l’intégrité référentielle |
L’intégrité référentielle est la cohérence de la base
de données. Intègre veut dire entier, non détruit, pas cassé…
Access propose de contrôler tout seul tout ce qui
peut l’être facilement (pour un ordinateur) et c’est très utile. Il y a trois grandes catégories d’opérations qui
peuvent dégrader la BDD, détruire sa cohérence interne : · Saisie
d’une valeur de clef externe sans correspondance avec un identifiant de la
table liée : par exemple, saisir dans une facture un #N°Client qui
n’existe pas dans la table Clients… Absurdité que cette nouvelle facture qui
pointe vers un fantôme, un client inconnu, inexistant. · Modification
d’un identifiant sans modifier les clefs externes qui pointent vers
lui : par exemple, changement du N°Client d’un client, sans adapter
toutes les clefs externes dans les factures qui pointaient vers ce
client : absurdité que toutes ces factures qui pointent désormais vers
un N°Client qui n’existe plus… · Suppression
d’un enregistrement alors que certains enregistrements d’autres tables pointent
vers lui : par exemple, supprimer un client sans supprimer les factures
qui pointaient vers ce client. Absurdité que toutes ces factures qui évoquent
dorénavant un client fantôme, « inconnu au bataillon »… Ces trois cas de figure aboutissent tous à une
rupture de la correspondance, qui doit être sans faille, entre clefs externes
et identifiants. C’est cette rupture qu’Access surveille avec ses contrôles
d’IR. DONC, avec l’IR : · Access
va interdire toute
saisie incohérente du côté ¥.
· Access
va interdire toute
modification de l’identifiant du côté 1 si au moins une clef
externe pointe vers cette valeur d’identifiant. · Avec
l’IR activée, Access va interdire
toute suppression d’enregistrement du côté 1, s’il existe une clef
externe qui pointe vers cet identifiant. |
|
Choisir d’effacer en cascade |
On a vu qu’avec l’IR activée, Access va interdire
toute suppression d’enregistrement du côté 1, s’il existe une clef externe
qui pointe vers cet identifiant. |
|
Choisir de mettre à jour en cascade |
On a vu qu’avec l’IR activée, Access va interdire
toute modification de l’identifiant du côté 1 si au moins une clef
externe pointe vers cette valeur d’identifiant. |
|
Dire quelle est la seule relation qui
aurait mérité ici, sans danger, le choix Suppression
en cascade, et expliquer pourquoi, malgré cela, on n’a pas coché cette
possibilité |
La relation entre Factures et Lignes de factures
pourrait fort bien se voir contrôler avec une Suppression en cascade
car : · Le risque est toujours limité
à une facture, et il est imaginable de recréer facilement
cette facture en cas de suppression accidentelle. · La suppression en chaîne est d’ampleur
prévisible : l’opérateur peut s’attendre à ce effet,
on n’a pas à redouter un effet de surprise, un manque d’anticipation.
L’opérateur, même endormi, peut bien se douter que s’il supprime une facture,
il va supprimer les lignes avec… Vous pouvez ainsi appliquer ce réglage de la Suppression
en cascade entre toutes les tables qui permettent de mémoriser les
lignes du tableau d’un imprimé : lignes de commande, lignes
d’ordonnance, lignes de prêt dans une bibliothèque, lignes de réservation,
lignes de bon de livraison, etc. Mais ici, pour les factures, il y a une particularité : il est
interdit, en droit, de supprimer une facture. C’est donc une contrainte
juridique qui oblige le programmeur de la BDD à interdire la suppression
des factures. Et c’est donc une astuce (ne pas cocher Suppression
en cascade) qui interdit cette suppression, sans rien devoir
programmer… Mais il est certain qu’une personne déterminée à
supprimer une facture à tout prix y arrivera sans difficulté : elle
supprimera d’abord les lignes de la facture, puis la facture elle-même. Ce sont surtout les accidents dont on se protège
ici. |
Je vérifie que j’ai bien progressé…
|
Je
sais … … CORRIGÉ |
Commandes et
procédures |
|
Expliquer pourquoi deux tables ne suffisent pas au formulaire Facture et pourquoi il faut deux requêtes |
Le formulaire Factures demande l’affichage de nombreuses
informations et aucune table, à elle seule, ne comporte toutes les
informations utiles. C’est un cas de figure très ordinaire,
très courant : on utilise des requêtes pour regrouper les informations à
offrir aux différentes zones du formulaire. Chaque requête puise dans plusieurs tables, mais
présente toutes les informations résultantes sous forme d’un tableau, elle
aussi, ce qui permet ensuite de traiter la requête comme une nouvelle table,
une nouvelle source possible, même si techniquement une requête n’est pas
du tout une table : une requête est vide, elle n’est qu’une question
posée aux tables et le tableau des réponses vient tout entier des tables. |
|
Dans une requête multitable, choisir le bon champ de jointure à
afficher pour saisie |
Quand une requête puise dans deux tables liées,
il faut toujours choisir (sélectionner) la clef externe, plutôt que
l’identifiant, de la relation. En effet, dans ce cas d’un champ mis en relation
dans une requête, seule la clef externe peut faire l’objet d’une saisie,
et si vous sélectionnez l’identifiant, vous bloquez (vous interdisez) toute
saisie ultérieure sur ce champ via cette requête. |
|
Calculer un champ dans une requête |
Choisir une colonne vide dans la grille des
critères, y taper le nom du résultat (sans crochets, sans signe égal,
sans parenthèses), suivi immédiatement du signe deux-points et de la
formule de calcul, où les noms des champs, eux, sont placés entre
crochets. Astuce : si les noms sont sans espace, Access ajoute tout seul
les crochets qui manquent, pas besoin de les taper. |
|
Créer, avec un Assistant, un formulaire avec
un sous-formulaire |
Penser à quitter Access 97 et le relancer
aussitôt si on a prévu des listes déroulantes sur les clefs externes. Si
on ne fait pas cette manœuvre étrange, un bug de l’Assistant va
construire un formulaire et sous-formulaire en oubliant certaines
listes : le résultat sera inutilisable, et il faudra tout recommencer… Lancer l’Assistant : Insertion,
Formulaire, Assistant Formulaire… Faire passer tous les champs de la première
source (en-tête) dans la zone Champs sélectionnés. Puis, ne PAS cliquer sur Suivant !!! Important : c’est en indiquant ici, dans cette
même étape de l’Assistant, que
l’on a besoin non pas d’une mais de
deux sources (requêtes), que l’on demande à l’Assistant de
fabriquer un formulaire et son sous-formulaire. Cliquer sur la flèche bas du champ Tables/Requêtes, et choisissez la deuxième source (celle du détail
qui va alimenter le SF). Puis, ajouter
tous les champs de cette
deuxième source à la zone Champs sélectionnés. Une fois que tous les champs des deux sources
sont sélectionnés, cliquer sur Suivant… |
|
Choisir
des noms d’objets (requêtes, formulaires, états) qui aident à les regrouper et à les reconnaître |
Sous Access, les objets sont listés par
ordre alphabétique, sans qu’on puisse changer cet ordre. Pour forcer l’ordre,
il faut donc jouer d’astuce avec les noms d’objets : en plaçant la
même lettre devant tous les objets à regrouper, on les fait apparaître
ensemble dans la liste. |
|
Afficher
les Propriétés du Formulaire |
Double cliquer sur le coin haut gauche
gris noir du formulaire. |
|
Expliquer le rôle du champ père et du champ fils |
Les lignes
du SF doivent être celles qui correspondent exactement à
l’enregistrement actuellement affiché dans le formulaire principal,
en tête. Pour assurer cette parfaite correspondance, on se
sert de deux champs qui doivent être égaux : · l’un
dans le formulaire principal, c’est l’identifiant de la source,
côté 1 de la relation, qu’on appelle champ père, · et
l’autre dans le SF, c’est la clef externe de la source, côté
plusieurs de la relation, qu’on appelle champ fils. |
|
Expliquer
la nécessité d’un champ Prix Facturé,
et son rôle par rapport à Prix Actuel
(PU) |
Le champ Prix actuel (PU) de la
table Produits mémorise une info qui change tout le temps : les
prix des produits ne sont pas stables dans le temps. Le prix facturé, lui, ne doit pas varier avec le
temps : si on a facturé un produit à x €, il ne faut surtout pas que ce
prix soit différent quand on consulte cette facture un an après ! Le rôle du champ Prix facturé dans la
table Ligne Factures est de mémoriser le prix pratiqué le jour de la facture, et de s’en souvenir
sans erreur malgré toutes les variations possibles du Prix Actuel. |
|
Bloquer
la saisie d’un champ et le montrer visuellement |
Donner au contrôle les propriétés Activer :
non et Verrouillé : oui. Et pour aider à anticiper ce blocage, changer
l’apparence des contrôles ainsi bloqués : ne pas les laisser comme
les autres, leur retirer la couleur du fond et la couleur des bordures :
les rendre transparents. |
|
Expliquer
l’intérêt de la Barre d’état |
La Barre d’état est la zone de messages, c’est l’endroit
de l’écran où le programmeur peut parler à l’utilisateur, où il peut l’aider.
Souvent, cette zone est négligée par les programmeurs et les utilisateurs en
sont réduits à se débrouiller seuls. Pourtant, la qualité des messages (qui demande
une réflexion approfondie champ par champ) participe beaucoup à la
qualité de l’application. Chaque contrôle de formulaire a une propriété Texte
barre d’état qu’il suffit de saisir. Dans la même famille, la propriété Texte
Info-bulle permet de programmer des messages dans des post-its jaunes
au survol du contrôle par la souris. On peut Copier Coller le
texte de la Barre d’état vers le texte de l’Info bulle, car certains
utilisateurs ne regardent jamais le bas de leur écran, ils ne savent même pas
qu’il y a une Barre d’état… Alors que personne ne peut rater le post-it
jaune… |
|
Ouvrir
rapidement le SF affiché dans un formulaire (avec
Access 97) |
Double cliquer sur le grand rectangle blanc qui
symbolise l’emplacement du SF. Attention à d’abord cliquer ailleurs : le
double clic doit être direct sur le contrôle SF non sélectionné, sinon le
double clic « entre dans le nom » du SF, et il faut cliquer en
dehors pour en sortir. |
|
Dimensionner,
déplacer ou masquer des colonnes |
Dimensionner une colonne : glisser sur le
bord droit du titre. Déplacer une colonne : cliquer sur le titre,
relâcher, puis glisser sur le titre. Masquer une colonne : cliquer droit sur le
titre, Masquer… |
|
Changer le titre d’une
colonne de SF : |
|
|
Programmer
la recopie auto d’une colonne de SF à l’autre |
Déterminer le contrôle dont la saisie déclenchera
la recopie (ici, c’est la saisie de la RéfProd), sélectionner la
propriété AprèsMAJ (après mise à jour, juste après la saisie d’une
valeur), et tapez un petit programme VBA sur la logique suivante : me.ContrôleDestination=me.ContrôleOrigine La ligne se lit de droite à gauche car le signe
égal, opérateur d’affectation d’une valeur à une variable, fonctionne comme
cela. Pour s’en souvenir, on pourrait lire la ligne en disant : « le contrôle destination devient égal au contrôle d’origine ». Exemple : Me.PU_facturé = Me.PU_actuel |
|
Expliquer le sens de l’expression me. |
Me signifie moi en anglais (prononcer mi).
Le mot me désigne le formulaire courant : ce mot évite de
taper tout le fatras d’habitude requis pour désigner un objet avec précision. C’est très commode ! |
|
Calculer
un cumul de colonne dans un SF |
Pour cumuler
une colonne de sous-formulaire, il faut : 1. Placer
une Zone de texte indépendante (non liée à un champ de table)
dans le pied du SF. 2. Lui
donner un nom parlant (car on va s’en servir pour récupérer le résultat
ailleurs), CumulMontant par
exemple. 3. Calculer
sa valeur en mettant une fonction Somme dans sa propriété Source.
Exemple : =Somme([Montant])
Pour récupérer le cumul
dans le formulaire principal, il faut créer une Zone de texte
indépendante, et dans la propriété Source, taper une expression
qui désigne précisément le contrôle cumulé du SF en respectant la syntaxe
suivante : signe égal, le nom du SF entre crochets, point, le mot
formulaire au singulier, point d’exclamation, le nom du contrôle entre crochets… Exemple :
=[A SF Détail des
factures].[Formulaire]![CumulMontant] |
|
Récupérer
(et affecter à un contrôle) la plus grande valeur rencontrée dans un champ d’une table |
La fonction MaxDom( Champ ; Table )
repère la plus grande valeur actuellement rencontrée dans un champ de table. |
|
Calculer
le numéro suivant du prochain enregistrement, sans utiliser le type NumAuto |
Le type NumAuto crée des trous
dans la séquence des numéros en cas d’abandon de la
saisie d’un nouvel enregistrement. Or il est interdit, en droit, de présenter
une séquence de numéros de factures avec des trous : les numéros doivent
se suivre, sans exception. Il y a un autre moyen de calculer les numéros de
factures automatiquement sans souffrir de la faiblesse de NumAuto :
Exemple : MaxDom("[N°Facture]";"[FACTURES]")+1
|
|
Expliquer l’inconvénient du type NumAuto pour les numéros de factures |
Quand la saisie d’un enregistrement commence, un NumAuto
est calculé et attribué au champ… Si la saisie est interrompue ou
abandonnée, le numéro est perdu, il ne sera jamais plus attribué :
lors du prochain nouvel enregistrement, ce sera le numéro suivant qui sera
affecté par NumAuto, et n’essayez pas de discutailler, c’est sans
appel… :o) Pour des factures, c’est rédhibitoire
(inacceptable) puisque totalement interdit par le droit. |
|
Déplacer
un contrôle sans perdre son alignement |
CTRL MAJ Flèche |
Je vérifie que j’ai bien progressé…
|
Je
sais … … CORRIGÉ |
Commandes et
procédures |
|
Créer
un sous-programme
et l’appeler à partir
d’ailleurs |
Taper Sub, un espace, le nom du SP
(de préférence précédé des lettres SP pour faciliter son repérage parmi les
autres programmes) sans espace, et Entrée :
Access ajoute seul des parenthèses et la ligne End Sub. Taper le programme entre Sub et End Sub. Pour appeler
ce SP à partir d’un autre programme, il suffit de prévoir une ligne avec son
seul nom : pas de sub cette fois, pas de parenthèses non plus, le
nom tout seul. |
|
Appeler
un SP après la saisie d’un contrôle de formulaire. |
Sélectionner le contrôle dont la saisie doit déclencher
l’exécution du SP, choisir la propriété AprèsMAJ, cliquer sur
le petit bouton Taper le seul nom du SP (sans le mot Sub, sans
parenthèse)… |
|
Créer un bouton qui ouvre un
formulaire |
Cliquer sur l’outil Bouton Dans le "texte" du bouton, utilisez l’esperluette
& pour souligner la lettre
accélératrice, qui permettra de « cliquer » sur le bouton sans
la souris. |
|
Expliquer
pourquoi et comment donner une lettre accélératrice aux
boutons |
Les phases de saisie intensive
s’accommodent mal du travail à la souris : il est
pénalisant de lâcher son clavier, prendre sa souris, repérer où est le
pointeur, viser le point voulu, cliquer, et alors seulement, si on n’a pas
cliqué à côté… agir… Alors que, avec quelques techniques clavier bien
maîtrisées, on va vite et bien, sans se tromper : la lettre
d’appel rapide des boutons va dans ce sens : en plaçant une esperluette
& dans le texte du bouton, on souligne la lettre qui suit
l’esperluette et on autorise à "cliquer" avec le clavier en tapant ALT +
lettre soulignée. |
|
Créer
un bouton pour fermer le formulaire et associer ce
bouton à la touche Échap
(Esc) |
Vérifier que les assistants sont actifs : l’outil
"baguette magique" doit
être "enfoncé", cliquer une fois sur l’outil Bouton de commande,
cliquez approximativement là où on veut mettre le bouton : cela lance un
Assistant… Choisir Opérations sur formulaires, puis Fermer le formulaire… Pour que ce bouton Fermer soit associé à
la touche Echap, on lui donne la
propriété Annuler : oui. On ne peut prévoir ce réglage que sur un seul
bouton par formulaire. |
|
Accéder
aux Propriétés du Formulaire entier |
Double clic sur le coin haut gauche
de la fenêtre du formulaire, à l’intersection des deux règles blanches
graduées. |
|
Enregistrer
la position du formulaire sur l’écran |
Ctrl S…
Mais pour mémoriser une position, il faut
désactiver le centrage automatique : donner au formulaire la Propriété AutoCentrer :
non. |
|
Sélectionner
un enregistrement entier dans un formulaire |
Cliquer (ou glisser) sur le sélecteur |
|
Supprimer
un enregistrement entier dans un formulaire, ou dans un SF |
Ctrl – (Ctrl moins) supprime
l’enregistrement courant sans avoir à le sélectionner entièrement au
préalable. Il faut quand même que le focus soit
quelque part dans l’enregistrement : le curseur doit clignoter sur un
des champs de l’enregistrement à supprimer. |
|
Rendre un formulaire "auto ouvrable" au démarrage |
Activer la fenêtre BDD (F11) et lancer la commande Outils,
Démarrage… et renseigner le champ Afficher le formulaire… |
|
Créer
un formulaire indépendant de toute table ou
requête pour y placer uniquement des
textes et des boutons, supprimer
les affichages habituels ici inutiles |
Créer un formulaire vierge, sans assistant. Lui
donner une couleur de fond, créer quelques étiquettes pour le titre et des
consignes, créer les boutons permettant de naviguer vers les écrans de
l’application, retirer tous les ornements (propriétés) de fenêtre inutiles
ici : ascenseurs (barres de défilement), sélecteur, boutons de
déplacement, diviseur d’enregistrement, autocentrage, boutons de contrôles… |
|
Supprimer
un programme VBA lié à un vieux bouton détruit puis
recommencé avec un Assistant |
Ouvrir l’éditeur VBA avec le bouton Attention à laisser un des programmes quand même… |
|
Faire apparaître un post-it jaune au survol d’un bouton |
Régler la propriété Texte d’Info-bulle des
boutons : taper le texte voulu dans cette propriété. |
|
Faire qu’un formulaire soit toujours ouvert en saisie d’un nouvel
enregistrement |
Donner la propriété EntréeDonnées :
oui au formulaire. |
|
Créer un bouton sans assistant et lui taper son programme |
Désactiver l’Assistant sur la palette
« Boîte à outils » :
cliquer sur l’outil "baguette
magique" Taper
quelques Retours Chariot (avec Entrée) entre Sub et
End sub, pour faire de la place, puis taper le programme entre le début et
la fin (sub et End sub). |
|
Expliquer le mot me. |
Me signifie moi en anglais (prononcer mi).
Le mot me désigne le formulaire courant : ce mot évite de
taper tout le fatras d’habitude requis pour désigner un objet avec précision. C’est très commode ! |
|
Demander
de l’aide sur une Propriété de
contrôle de form. |
Sélectionner la propriété dans la Palette des
propriétés, et taper F1. |
|
Demander
de l’aide sur un mot VBA |
Placé dans la fenêtre VBA, double cliquer sur
le mot à expliciter et taper F1. |
|
Récupérer
un fragment d’exemple de l’aide, pour
l’intégrer à mon programme, et ensuite le personnaliser |
Sélectionner
le texte exemple, |
|
Rendre
un traitement conditionnel |
Prévoir une instruction IF… THEN… ELSE … ENDIF. Attention à bien mettre IF et THEN sur la même
ligne. Attention également à mettre en retrait
les lignes du cas oui et les lignes du cas non. Exemple : If me.DataEntry=False
Then ‘Si le formulaire n’est pas en mode Saisie Penser à documenter tout ce qui peut l’être, avec
des commentaires, pour faciliter la relecture dans six mois ou un an… |
|
Saisir des commentaires
(textes aide-mémoire non exécutés) dans un programme VBA |
Mettre une apostrophe, au début ou au beau
milieu, d’une ligne : tout ce qui suit l’apostrophe sera ignoré (non
exécuté) par le programme : c’est une zone de liberté essentielle pour
noter les astuces, les pièges, les particularités qu’il faut garder en tête
si on veut modifier le programme… |
Je vérifie que j’ai bien progressé…
|
Je
sais … … CORRIGÉ |
Commandes et
procédures |
|
Faire
un brouillon d’état pour fixer mes idées : objectifs et contraintes |
Repérer les textes variables, bien distinguer
les variables des textes constants, réfléchir à la source des
informations : ce sont rarement les simples tables qui suffiront, il
faudra créer des requêtes pour regrouper des informations de plusieurs
tables et éventuellement effectuer des calculs (impossibles dans les
tables). Prévoir une mise en page, au moins en gros : quels
grands équilibres, regrouper les informations en zones, si
possible encadrées et intitulées, pour faciliter le repérage dans
l’imprimé. |
|
Utiliser l’Assistant pour créer un
état avec un tableau |
Active la fenêtre BDD, avec F11,
lancer la commande Insertion, État,
choisir Assistant état, puis cliquer sur OK. Ici, sélectionner la première source (table ou
requête), celle de l’état principal, et
prendre tous les champs utiles avec le bouton Ne pas cliquer sur le bouton Suivant : sélectionner la deuxième source, celle du sous-état, et
prendre également tous les champs
utiles avec le bouton Et, ensuite seulement, après avoir
récupéré tous les champs utiles
des deux sources, cliquer sur le bouton Suivant… Lire
et comprendre les deux étapes suivantes de l’Assistant, sans rien y changer, et passer à la suite en
cliquant sur Suivant… Ajouter
ensuite un tri éventuel, pour
forcer sur papier l’ordre d’affichage des lignes du tableau, puis cliquer sur Suivant. Choisir une présentation et un
style … Suivant… Taper
enfin le titre et cliquez sur Terminer. |
|
Sélectionner
des groupes de contrôles (3 techniques) |
· Clic
sur le premier contrôle, puis MAJ
clics sur les contrôles à ajouter à la
sélection, et MAJ clic
pour retirer un contrôle à la sélection. · Dessiner
un rectangle imaginaire en glissant au travers des
contrôles à sélectionner : les prendre « au lasso ». · Cliquer
ou glisser sur une des règles
blanches graduées, pour sélectionner tous les contrôles placés en regard. |
|
Aligner
des contrôles entre eux |
Sélectionner le groupe de contrôles à aligner,
puis cliquer droit Aligner… Noter que c’est le contrôle le plus éloigné
qui sert de repère pour les autres. |
|
Créer
un texte libre sur un état |
Ajouter un contrôle Étiquette, et taper le
texte voulu à l’intérieur… |
|
Faire apparaître ou disparaître les différents En-têtes et Pieds |
Lancer la commande Affichage, En-tête et pied de page pour des mentions qui doivent apparaître
sur toutes les feuilles de papier, ou Affichage, En-tête/pied de rapport (ou d’état) pour des mentions qui doivent apparaître
seulement sur la première ou la dernière page de la série qui sera
imprimée. |
|
Prévoir
un saut de page entre deux enregistrements |
Sélectionner la zone la plus basse de
l’état : le pied de page ou d’état ou de groupe, par exemple. Faire apparaître, si ce n’est pas déjà fait, la palette
des propriétés de cette zone, en double cliquant n’importe où dans la
partie blanche de la zone. Puis, poser un Saut de page Après cette section, ce qui commencera toujours
une nouvelle page pour l’enregistrement suivant, juste après le pied de
groupe. |
|
Arrêter
d’imprimer des pages blanches pour rien |
Il est fort possible qu’Access imprime une
page blanche entre deux factures. Cela tient au fait que l’Assistant a
complètement rempli l’espace disponible (entre les marges) avec les champs
voulus… Si bien qu’ensuite, le moindre petit déréglage (une glissade) d’un
champ en dehors des limites (à droite) empêche d’imprimer sur la page
courante tel fragment de graphisme ou tel caractère : il sera alors imprimé
sur une page supplémentaire… Pour régler le problème, on peut réduire un peu les marges gauche et
droite : lancer la commande Fichier, Mise en page… et taper un
chiffre plus petit (ce sont des millimètres) en marge gauche et droite. |
|
Prévoir
une valeur calculée sur l’état |
Deux possibilités : · Soit
on prévoit un champ calculé dans la requête qui alimente l’état, et
dans ce cas, il suffit de prévoir dans l’état une Zone de texte dépendante
liée à ce champ. · Soit
on ajoute dans l’état une Zone de texte indépendante (non
reliée à un champ de table), et on tape une formule de calcul
(précédée du signe égal) dans sa propriété Source. |
|
Formater
un nombre de façon à forcer l’affichage de zéros non significatifs (à gauche) |
Donner à la propriété Format la
valeur 00000 |
|
Créer
un bouton de formulaire qui ouvre un état en Aperçu |
Créer un bouton dont le
code (programme VBA) soit rédigé sur ce modèle : DoCmd.OpenReport
"Facture", acPreview |
|
Chercher
dans l’aide VBA, la syntaxe et des exemples d’une
instruction donnée |
Double cliquer sur le mot inconnu (OpenReport par
exemple) , |
|
Forcer
l’impression d’un état avec les seules données du formulaire en cours |
Créer un bouton dont le
code (programme VBA) soit rédigé sur ce modèle : DoCmd.OpenReport
"Facture",
acPreview |
|
Finaliser
l’application |
Tester l’application
entière. Bien vérifier tous les recoins de l’ergonomie (contrôler le confort de l’utilisateur), notamment
toutes les aides de la barre d’état de tous les contrôles ! Penser à la propriété Texte d’Info-bulle
des boutons pour afficher des post-its jaunes au survol de la souris
! Tout ce qui peut aider l’opérateur de
saisie dans son travail est un facteur de qualité pour votre
application sur Access. Par exemple,
un post-it sur tous les boutons Fermer peut utilement rappeler à
l’opérateur que la touche Échap ferme le formulaire sans la souris… |
|
Déplacer
un ou plusieurs contrôles sans
perdre leur alignement |
Sélectionner les contrôles à déplacer, puis CTRL
MAJ Flèche |
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.