Leçon 44 : Etats Semi-automatiques : Initiation aux groupes

Temps nécessaire pour suivre cette leçon : Trois bons quarts d'heure

Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici

Aperçu de cette leçon

Dans cette leçon, nous allons quelque peu personnaliser nos états : il ne va plus du tout s'agir d'étiquettes, mais de regroupements.

Sommaire

  1. Etats : création d'un état semi-personnalisé en utilisant l'assistant état
  2. Etats : groupement de données dans l'assistant
  3. Etats : groupement de données dans l'assistant : Ordre de tri des données
  4. Etats : groupement de données : Visualisation du résultat

Nous n'allons maintenant plus nous occuper de T_Client, mais nous allons revenir à notre bonne vieille table T_Celebrite.


Etats : Création d'un état semi-personnalisé en utilisant l'assistant état

Demandez un nouvel état avec "Assistant Etat", basé sur T_Celebrite :

Lorsque vous cliquez sur OK, vous arrivez alors sur la boîte de dialogue suivante :

Cette boîte de dialogue va vous permettre de sélectionner les champs de la table T_Celebrite que vous voulez voir apparaître dans votre état. Dans notre cas, nous voulons voir apparaître seulement 3 champs : Le titre, le nom et le prénom. Déplacez les avec le bouton > dans la partie de droite.


Etats : groupement de données dans l'assistant

Je vois qu'on peut choisir plusieurs tables en haut à gauche ?

Oui, mais, nous n'allons pas utiliser cette option pour l'instant, ce serait trop compliqué, et la seule autre table dont nous disposons est la table T_Pays qui ne nous permettrait pas de faire des choses intéressantes.. Restons dans une seule table. Cliquez sur Suivant.. Cette boîte de dialogue est particulièrement intéressante, car c'est ici que vous allez pouvoir regrouper les célébrités.

 

C'est à dire ?

Plutôt qu'avoir une simple liste des célébrités, ce serait intéressant de regrouper par leur titre par exemple : d'abord toutes de "Madame", après, toutes les "Mademoiselle", et enfin, tous les "Monsieur", pour se rendre compte très facilement de la répartition des Monsieur, Madame et Mademoiselle dans notre table, ou pour d'autres raisons. Vous allez voir, c'est une fonction d'Access très intéressante qui n'existe pas dans Excel (en tout cas pas sous une forme aussi conviviale).

Envoyez le titre à droite avec le bouton > :

Le fait d'avoir le titre en bleu va faire en sorte de grouper justement les gens par titre.
Mais pourquoi n'a-t-on pas regroupé par NomClient par exemple ?

Parce que ça n'aurait pas servi à grand chose : ç'aurait été un état qui aurait regroupé toutes les célébrités qui s'appellent "Adjani", puis toutes celles qui s'appellent "Alési", "Allen", etc. Il n'y aurait chaque fois qu'une seule personne dans chaque groupe, c'est idiot... Bon pour "Belmondo", on aurait eu 2 personnes : Jean-Paul et Paul, mais c'est tout... L'intérêt est plus que limité.


Etats : groupement de données dans l'assistant : Ordre de tri des données

On ne peut donc grouper en fait que par des champs qui se répètent régulièrement.
On aurait pu grouper par domaine par exemple ?

Oui, si à l'écran d'avant on avait sélectionné le domaine.

Bon, assez palabré, cliquez sur Suivant : Nous arrivons dans un écran nettement moins important puisqu'il s'agit de déterminer l'ordre de tri :

Vous constatez l'existence de 4 listes déroulantes sur la droite, dont seule la première est active. Dans cette première liste, vous pouvez choisir entre le nom et le prénom, mais pas le titre :

En fait, tous les champs, sauf celui qu'on a choisi à l'écran d'avant, c'est à dire le Titre comme groupe, c'est ça ?

Exactement. Le groupe des titres sera automatiquement trié : c'est à dire qu'on aura d'abord toutes les "Madame", ensuite les "Mademoiselle" et après tous les "Monsieur" simplement parce qu'alphabétiquement, c'est cet ordre qui est respecté.

Et maintenant, à l'intérieur-même de chaque groupe, vous voulez peut-être que les célébrités soient triées par ordre alphabétique : on aura donc d'abord toutes les "Madame", et DANS les "Madame", ce sera trié : Balasko, Bardot, Birkin, etc.

Après, nous aurons le groupe des "Mademoiselle", qui sera aussi trié : Adjani, Hingis, Ledoyen, Lopez, Mauresmo, etc. et après ça recommence avec les "Monsieur"

C'est pratique ! Et alors, je constate que quand j'ai choisi de trier par le nom, la 2ème liste s'active : . je peux aussi trier par prénom alors ?

Oui, c'est comme une 2ème clé de tri... Mais ce serait complètement idiot de trier aussi par prénom !

Pourquoi ?

Et bien, si vous vous rappelez la leçon 26, sur le tri Multi-colonnes dans les requêtes, vous devriez vous en rendre compte : si vous triez aussi sur les prénoms, il va donc d'abord donc trier sur les noms, et par exemple, pour Adjani, il va donner tous les prénoms des gens qui ont pour nom Adjani : Complètement crétin puisqu'il n'y a qu'UNE personne qui s'appelle Adjani. Bon pour Hallyday, il y a 2 personnes : Johnny et David, alors il les triera par ordre alphabétique, mais bon, c'est quand même idiot.

J'ai compris : Si par exemple, j'avais demandé aussi le Pays d'origine sur le premier écran de choix des champs, j'aurais pu demander un tri d'abord sur le pays, puis ensuite comme 2ème clé de tri le nom , il aurait donc groupé toujours par titre, mais par exemple, pour les "Monsieur", il aurait montré les différentes célébrités triées par pays : Allemagne, Belgique, Espagne, Etats-Unis, etc. Et pour chaque pays, il aurait montré les gens par ordre alphabétique cette fois de leur nom : par exemple pour l'Allemagne il aurait montré Schumacher, parce que c'est le seul, mais ensuite pour la Belgique qui est le pays suivant alphabétiquement, il aurait affiché Brel et ensuite Merckx pour respecter l'ordre alphabétique !

Oui. C'est dur à comprendre quand c'est expliqué théoriquement, mais nous allons le faire dans un 2ème temps. Pour l'instant, nous allons nous contenter de notre état qui contient seulement les titres, et un ordre alphabétique pour les noms de famille. Cliquez sur Suivant :

Cette boîte de dialogue va simplement vous permettre de déterminer l'aspect esthétique de votre état. Quand vous choisissez Echelonné, Bloc, Contour 1, etc. dans la liste du milieu, vous visualisez une sorte de mini-aperçu dans la partie de gauche qui va vous montrer plus ou moins l'aspect de votre état.

A droite, l'orientation portrait ou paysage décide de dans quel sens vous allez imprimer : portrait, c'est quand c'est imprimé en hauteur, et Paysage en largeur (votre feuille de papier A4 donc). Si vous choissez Paysage, vous n'aurez pas besoin de mettre votre feuille dans l'imprimante dans l'autre sens : vous la placez toujours dans le sens de la hauteur, mais c'est Access qui va imprimer l'état dans l'autre sens. C'est assez rare qu'on imprime en paysage. On pourrait choisir d'imprimer en paysage quand par exemple il y a vraiment beaucoup de champs les uns à côté des autres et qu'on a besoin d'une grande largeur de feuille.

Un peu plus bas, il y a une case à cocher "Ajuster la taille des champs afin qu'ils tiennent tous sur une page". J'ai essayé d'afficher un état avec et sans cette coche, mais je n'ai pas vu de différence... S'il y a trop de champs, ça continue à ne pas tenir sur la page. Mais nous verrons un peu plus tard comment faire pour pallier à ce problème de place.

Choisissez Echelonné, et cliquez sur Suivant.

C'est à nouveau une boîte de dialogue peu importante qui va vous permettre de déterminer plus ou moins les polices de caractère et les couleurs de votre état. Dans la partie de droite, vous cliquez sur les difféents modèles (Compact, Formel, Léger, etc.), et dans la partie de gauche, vous avez un petit aperçu :

1. C'est le style du titre. ATTENTION : IMPORTANT : Il y a une confusion : Ce n'est PAS parce que c'est marqué Titre que c'est le champ Titre. En fait c'est le style de titre du groupe. Si vous aviez choisi dans le premier écran de regrouper par Etat Civil, dans cet écran, ce serait aussi marqué Titre dans la partie de gauche. En fait, plutôt que d'écrire "Titre" en tout gros, ils auraient à mon avis mieux fait d'écrire "En-tête du groupe", mais bon...

2. Ca c'est le style de l'étiquette : vous aurez tous les noms et les prénoms, mais au dessus des noms et des prénoms, ce sera bien inscrit "Nom" et "Prénom". Ces titres "Nom" et "Prénom" seront écrit avec ce style (2)

3. C'est le style d'écriture des noms et des prénoms bien réels : Johnny Hallyday, Josiane Balasko, Isabelle Adjani, etc.

Choisissez "Compact", et cliquez sur Suivant.

Il ne reste plus qu'à donner un nom à notre état. Appelez-le E_CelebriteGroupeeParTitre, et cliquez sur Terminer :

 


Etats : groupement de données : visualisation du résultat

Voici la première page de votre état (les chiffres et les cadres rouges n'apparaissent pas chez vous, c'est pour vous montrer les zones importantes) :

1 : Ce titre représente le nom de l'état. C'est lors de la dernière étape de la création de cet état que vous avez donné le nom "E_CelebriteGroupeeParTitre" qu'Access l'a attribué au nom de l'état ET au titre de la première page, car ça n'apparait que sur la première page (Il y a 4 pages comme vous pouvez constater en bas à droite)

2 : Ces titres sont répétés, eux, sur chacune des pages... En l'occurrence, ils ne sont pas très utiles parce qu'on se doute bien en voyant les données que c'est le titre, le prénom et le nom, mais bon...

3 : Cette liste de 5 personnes en tête de l'état sont des personnes... qui n'ont pas de titre... Oui, on sait que Einstein, Gorbatchev, Lennon et Reno sont des "Monsieur, et Goya une "Madame", mais DANS LA TABLE, leurs titres ne sont pas renseignés... Pourquoi apparaissent-ils en premier lieu ? Simplement car, comme nous l'avons dit lors de la conception de l'état, les titres sont triés par ordre alphabétique... et "rien", c'est alphabétiquement avant "Madame".
En fait "rien" est avant tout le monde. Evidemment, ça fait bizarre de ne pas voir de titre, mais il y a bien le titre en haut à gauche, mais comme il est vide... On ne voit rien !

4 : Voici la liste complète des "Madame". Comme vous pouvez le constater, elles sont correctement triées par leur nom : Balasko, Bardot, Birkin, ... , Zeta-Jones.

5. C'est la liste des "Mademoiselle". Peut-être sont-elles toutes là, ou alors en reste-t-il d'autres affichées dans la 2ème page ???

6. C'est le pied de page : Sous chaque page, la date, et le numéro de la page seront imprimés.

Je suis allé sur la 2ème page, et effectivement, il n'y a plus d'autres "Mademoiselle". Par contre, j'ai une Mme !

Eh oui ! C'est de nouveau la faute à la table ! Les données ne sont pas toutes correctes... Et jusque là, nous ne nous étions rendu compte de rien... Mais tout à coup, lorsqu'il s'agit de montrer les données de manière synthétique, rien ne va plus ! Ce sera le travail de notre prochaine leçon : le nettoyage des tables. D'ailleurs, si vous vous rendez sur la dernière page, vous verrez également Charlie Chaplin qui est montré dans la catégorie "Mr.".

Vous pouvez fermer cet état.

Bon... Hem... On peut résumer ?

L'assistant Etat permet de personnaliser quelque peu les états : choix des tables et des champs, aspect esthétique choisi dans une liste, et surtout l'initiation aux groupes : C'est à dire la possibilité de regrouper les données selon tel ou tel critère. Nous avons vu que pour qu'un groupe soit efficace, il faut qu'il s'agisse de données répétitives, comme par exemple le Titre, mais le Pays ou l'état civil auraient aussi convenus. Par contre les informations uniques comme le nom de famille ou la remarque ne sont pas des en-têtes de groupes judicieux.

Avez-vous bien compris ?

  1. Je crée un état semi-automatique basé sur T-Celebrite. Un ce ces champs n'est pas vraiment adapté à être un en-tête de groupe. Lequel ?
    a. Date de naissance ***
    b. Domaine
    c. Pays d'origine
    d. Décédé

  2. Je crée un état semi-automatique basé sur T_Pays, et je groupe sur l'unique champ Pays :
    a. C'est une bonne idée de grouper
    b. C'est inutile de grouper***

  3. Avec l'assistant semi automatique de création d'état, je suis obligé de définir au moins un groupe ?
    a. Oui
    b. Non ***

  4. L'assistant semi-automatique de création d'état me permet de sélectionner quels enregistrements je désire voir apparaître ?
    a. Non. On peut choisr les champs, mais pas les enregistrements. Il faut créer une requête si on veut sélectionner les enregistrements ***
    b. Oui. Il suffit de cliquer sur "Sélectionner les enregistrements" dans la première boiîte de dialogue de l'assistant
    c. Non, l'assistant semi automatique de création d'état se base uniquement sur des tables

  5. Quel est le nombre minimum de champs recquis dans la table qui va servir de base à l'assistant semi-automatique de création d'état ?
    a. 1 ***
    b. 2
    c. 4
    d. 6

Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses.

Exercice

L'exercice consiste à créer 3 états, dans votre base de données habituelle, qui vont ressembler à E_CelebriteGroupeParTitre (Qui vont chaque fois contenir le prénom et le nom, trié chaque fois par le nom), selon les critères suivants :

Vous allez constater à quel point c'est désagréable d'avoir des groupes qui contiennent ?? ou ???, d'ou l'intérêt de nettoyer les tables. Vous verrez ce que je veux dire quand vous ferez l'exercice.

Etat Numéro 1
Base : T_Celebrite
Groupe : Groupez sur le champ Domaine
Présentation : Contour 1 (Vous verrez quand vous serez dans l'assistant)
Style : Société (Vous verrez quand vous serez dans l'assistant)
Nom : E_CelebriteGroupeParDomaine

Etat Numéro 2
Base : R_CelebriteMarie : Vous allez commencer par créer une requête R_CelebriteMarie, qui va contenir tous les gens "Marié(e)" avec comme champs : NomClient, Prenom, PaysOrigine, et bien sûr EtatCivil
Groupe : Groupez sur le champ PaysOrigine
Présentation : aligné à gauche 1
Style : Gris léger
Nom : E_CelebriteMarieGroupeParPays

Petite remarque : Peut-on créer une requête qui demande tous les gens Mariés, et demander ensuite un état avec comme groupe l'état civil ? Oui, mais c'est complètement idiot de demander la même chose : En effet, comme il n'y aura de toute façon que les gens mariés, les grouper par état civil n'aura pour effet que d'avoir un seul grand groupe de gens Mariés... Logique, mais il faut y penser !

Etat Numéro 3 (A peu près l'inverse de l'état précédent, mais avec une requête paramétrée)
Base : R_CelebriteChoixPays : Vous allez commencer par créer une requête paramétrée R_CelebriteChoixPays, qui va contenir tous les gens d'un certain pays que vous saisirez lors du lancement de la requête. Vouzs avez oublié comment on fait une telle requête ? C'est pas bien, ça ! Revoyez la leçon 27 pour vous rafraîchir la mémoire. Cette requête contiendra les champs : NomClient, Prenom, EtatCivil, et bien sûr PaysOrigine. Ce qui sera très sympa avec cet état, c'est qu'à chaque fois que vous le lancez, il va vous demander quel pays vous désirez puisque la requête sous-jacente le demande.
Groupe : Groupez sur le champ EtatCivil
Présentation : Bloc
Style : Gras
Nom : E_CelebriteChoixPays

Téléchargez la solution de l'exercice ici, qui n'est autre que ProFormation.MDB telle qu'elle devrait être à la fin de cette leçon.

Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.

Avez-vous une question technique concernant cette leçon ? Cliquez ici !
Une remarque sur cette leçon ? Un problème ? Une erreur ? une ambiguité ? Soyez gentil de m'en informer