Ambiguïtés de la case à cocher

Exemples :
  • Le client est-il domicilié en Suisse ? La réponse est Oui ou Non, et rien d'autre.
  • Le client est-il de nationalité Suisse ? La réponse est Oui ou Non... Mais comment répondre dans le cas d'un client bi-national ?
  • Le client est-il Marié ? La réponse est Oui ou ... Célibataire, veuf, voire Pacsé !
  • Le client possède-t-il un animal ? Oui ou Non  ? ... Oui mais en a-t-il plusieurs ? Et quel animal possède-t-il ?
  • Le client parle-t-il français ? Oui ou Non... Oui, mais quel est son niveau ? Il y a "parler français", et "baragouiner quelques mots"...
A part le premier exemple qui est (semble-t-il) sans ambiguïté, les autres exemples sont sujets à caution !
Maintenant, toute la question est de savoir ce qui importe dans vos données. Si vous travaillez chez un allergologue, et que tout ce qui vous importe, c'est de savoir si vos patients possèdent au moins un animal à la maison (ce qui peut expliquer certaines allergies), un champ Animal, défini en Oui/Non, suffira.
Mais si votre base de données gère des demandes de logements, il vous faudra savoir si les candidats possèdent un ou plusieurs chats et/ou chiens, car ce peut-être des données importantes pour l'acceptation du bail, et, dans ce cas, un champ Animal Oui/Non ne suffit clairement pas.

Création d'un champ de type Oui/Non

Ajoutez un champ Animal juste après le prénom, et définissez-le en Oui/Non.
Lancez la table en mode saisie de données.

Voilà ! Il suffit maintenant de cliquer sur la case à cocher pour attribuer ou non un animal.

Clavier et cases à cocher

On peut aussi utiliser le clavier pour cocher ou décocher une case :
  1. Cliquez sur Steven
  2. Appuyez sur la touche Tabulation
  3. Vous êtes sur la case à cocher : appuyez sur Espace : ça coche la case
  4. Rappuyez une 2ème fois sur Espace : la case se décoche.
  5. Appuyez sur Tabulation, et vous arrivez au champ suivant (SalaireMensuel)
  6. Si vous appuyez sur Maj-Tabulation , vous revenez sur la case à cocher. Attention : Appuyez sur , laissez le doigt appuyé dessus, et, ensuite, alors que vous avez toujours le doigt appuyé, tapez juste un coup sur .

Erreurs courantes

Exercice : Imaginons que nous voulions savoir si chaque personne possède un chien et/ou un chat. Peu importe combien ils en ont, on veut juste savoir s'ils en ont au moins un. Comment faire ?
On peut, bien sûr, créer un champ texte dans lequel on écrirait Chien, Chat, Chien et Chat ou Pas d'animal, mais ce n'est pas très convivial, c'est long à écrire, et on peut utiliser plusieurs orthographes différentes : Il a un chien, Have a cat, Zéro animal, et lorsqu'on va rechercher les enregistrements, ça ne va pas être simple !!! Auriez-vous une solution plus simple à proposer, en se basant sur un système de cases à cocher ? (ne regardez pas la réponse plus bas, mais essayez de trouver)
La solution qui consiste à installer une seule case à cocher Animal n'est pas suffisante, car nous ne savons pas s'il s'agit de chien(s) et/ou de chat(s).
A contrario, l'exemple ici à droite comporte trop de champs :
On peut cocher les cases de façon incohérente, comme par exemple Chaplin qui a, à la fois Pas d'animal, et un chien...

Système à plusieurs cases à cocher

La solution idéale est celle-ci : une case à cocher Chat, et une case à cocher Chien. Avec ces deux cases à cocher, on gère tous les cas de figure :
  • Edith a un (ou plusieurs) chiens(s)
  • Steven a un (ou plusieurs) chat(s)
  • Michael a un ou des chiens et chats
  • Max n'a pas de chien ni de chat
Et si on voulait rajouter un animal (comme un hamster, ou une tortue), il suffit de rajouter autant de cases à cocher que de type d'animal.
Reproduisez ce tableau de gauche dans votre table T_Client.

Interaction des cases à cocher avec Excel

Regardons ce qui se passe lorsque nous copions ces données dans Excel. (Vous vous rappelez ? Nous avons déjà copié une table dans Excel ici).


Nous allons faire quasiment la même chose, mais seulement en sélectionnant quelques colonnes, comme le schéma ici à gauche.
Allez ensuite dans Excel, dans la cellule A1, et collez ces 3 colonnes :

Les cases à cocher sont devenues les textes VRAI et FAUX. Et c'est vraiment du texte pur, comme on peut le voir dans la barre de formule, ça ne cache rien d'autre :
Il y a donc véritablement eu une transformation de Oui/Non en Vrai/Faux. En réalité, il faut savoir qu'Access (et tout programme, en fait), considère que Oui, ou Vrai est égal à la valeur -1, tandis que Faux, ou Non, vaut 0. Pourquoi -1 plutôt que 1, je n'en sais rien !
Or, ça, vous ne le voyez pas : Access vous affiche de sympathiques cases à cocher à la place.
Pour voir ce qui se passe en coulisses, sélectionnez le champ Chien, et cliquez en bas, sur l'onglet Liste de choix. Et dans la propriété Contrôle de l'affichage, sélectionnez Zone de texte.
Les cases à cocher ont à présent disparu, et ont été remplacées par VRAI (-1) et FAUX (0)!
Lancez la table en mode saisie de données, et cliquez sur VRAI du chien de Michael Jackson : le Vrai s'est transformé en sa véritable valeur interne : -1. Constatez la différence avec Excel, où on aurait pu s'attendre à voir aussi -1 dans la barre de formule, mais non !
Vous pouvez indifféremment écrire Oui, Vrai ou -1 pour "Cocher la case", ou Non, Faux, ou 0 pour "Enlever la coche". Vous pouvez essayer les différentes alternatives.
Cette histoire de texte (Oui, Vrai, Non, Faux) et de numérique (-1, 0) est quelque peu ambiguë, je vous l'accorde !

Oui, Non, Vrai, Faux, 0, -1, Texte

Faisons un test un peu idiot, mais qui peut permettre de mieux comprendre
  1. Définissez le type de données pour le champ Chien à Texte
  2. Lancez la table en mode saisie de données : Vous avez maintenant bel et bien du texte, même si vous cliquez dedans, ça ne se transforme plus en -1 et 0.
  3. Revenez en mode création, et RE-définissez le type de données à Oui/Non, et RE-lancez la table en mode saisie de donneés. Un message très clair vous avertit que les données vont être effacées !
  4. Dites Oui, et constatez que toutes les cases ont été décochées (Remises à 0)
Ainsi, Access est capable de transformer les -1 et 0 en texte VRAI-FAUX, mais il est (bizarrement) incapable d'effectuer l'opération inverse.

Valeurs par défaut sur cases à cocher

Regardons ensemble la propriété Valeur par défaut du champ Chien : il est à 0. Dès que nous créons un champ de type Oui-Non, la Valeur par défaut est à 0 (qui veut donc dire Non - pas cochée).
Cette valeur par défaut prend tout son sens dans le cas ou nous avons une grosse majorité d'enregistrements qui contiennent la même valeur.
Imaginons que la grande majorité des clients habitent à Genève : Définissez la Valeur par défaut de VilleHabitation à Genève, et lancez la table en mode saisie de données :
Cette valeur par défaut s'affiche, "Préconditionne" les nouveaux enregistrements. Ainsi, pour le prochain client, il aura :
  • La valeur FAUX (0) pour Chien
  • La valeur FAUX (Case non cochée) pour Chat
  • Et la valeur Genève pour VilleHabitation
Allez sur ce nouvel enregistrement, et entrez Chuck Norris :
A peine avez-vous écrit le N de Norris que :
  • Ses 2 cases à cocher sont Faux et 0
  • Sa VilleHabitation est Genève
  • Un nouvel enregistrement se prépare, avec les mêmes valeurs par défaut.
Maintenant, il est évidemment possible de changer sa VilleHabitation à la main, et de cocher la case :
Remettez la case à cocher pour le champ Chien.
La valeur par défaut 0 pour les cases à cocher n'est, en fait, pas utile.
Vous pouvez laisser 0, ou l'effacer, de toute façon, pour les nouveaux enregistrements, la case ne sera pas cochée.
Si vous désirez qu'une case soit cochée par défaut, vous mettrez simplement Vrai, ou Oui, ou même -1 dans la propriété Valeur par défaut du champ correspondant.

Valeurs par défaut sur une date

Vous rappelez-vous de la leçon 6, nous parlions des champs Date/Heure, et nous avons parlé de la combinaison des champs date et heure ?
Nous allons faire quelque chose de très sympathique : nous allons mémoriser le moment d'inscription des nouveaux clients.
Pour ce faire :
Créez un nouveau champ DateCreation, juste après le Prenom. Dans sa propriété Valeur par défaut, écrivez Maintenant().
Lancez la table en mode saisie de données, et regardez la valeur du nouvel enregistrement :
Bien entendu, si vous ouvrez votre table à 11H59, et que, juste avant d'entrer votre client, vous allez manger, et vous revenez à 13H30 pour l'écrire réellement, sa valeur par défaut ne va pas changer : ce sera toujours indiqué 11H59...

Si vous ne vouliez voir que la date d'entrée du nouveau client, sans préciser l'heure, alors, à la place de Maintenant(), écrivez plutôt Date(). Voici la différence :
Mais où se trouvent toutes ces fonctions ?
Y en a-t-il d'autres ?
Oui, bien sûr ! Il y a plein d'autres fonctions de ce style. Il n'y en a pas autant que dans Excel, mais il y en a pas mal quand même. Par contre, ce serait un peu ridicule d'essayer de toutes les apprendre par coeur... ce serait un peu comme si vous essayez d'apprendre l'anglais en lisant le dictionnaire... Mieux vaut connaître moins de mots, mais les utiliser correctement.
Toutefois, pour votre information, les fonctions se trouvent dans le générateur d'expression, et voici comment on aurait pu trouver cette fameuse fonction Date() en passant par ce biais
Nous y reviendrons ultérieurement, ne vous arrachez pas les cheveux à essayer de toutes les comprendre : je vous avoue que moi-même, je ne les connais de loin pas toutes, et beaucoup d'entre elles ne servent preque jamais... Comme les mots du dictionnaire, finalement...

Aucun commentaire:

Enregistrer un commentaire