Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Les états Access
Comme nous l'avons vu dans un autre support, les
formulaires sont les outils pour consulter, manipuler et modifier les données. Les
formulaires sont conçus sur les
tables ou les
requêtes . Lorsque les
tables sont reliées entre elles par le jeu des
relations ,
Access facilite la création d'un
formulaire avec
sous formulaire pour regrouper les données et proposer une vue synthétique. Les
états proposent une vue avant
impression . Cette vue est figée, son contenu dépend des objets
Access tels qu'ils ont été construits avant elle comme les
formulaires et
tables . Tout comme pour les
formulaires , un
état possède un
mode création . Ce dernier permet de disposer les éléments à votre guise de manière à obtenir l'
impression la plus adéquate possible. Pour les manipulations, nous allons partir d'une petite
base de données de facturation existante.
Télécharger la base de données facturation-etats.accdb en cliquant sur ce lien ,
L'ouvrir dans Access ,
Cliquer sur le bouton Activer le contenu sous le ruban,
Cette petite
base de données de facturation est articulée autour de deux
tables principales, la
table des clients et la
table des commandes . Ces deux
tables sont
reliées entre elles de manière à ce que l'on sache quelles sont les commandes appartenant au client. C'est ainsi qu'est conçu le
formulaire Clients_et_commandes regroupant dans une mêmevue, le client et ses commandes dans un
sous formulaire .
A l'issue, nous souhaitons ajouter sur ce
formulaire un bouton qui commande l'
aperçu avant impression d'un client et de la synthèse de ses commandes. Pour ce faire, nous devons commencer par créer l'état correspondant.
Création d'un état sur une table
Dans le volet de gauche, sélectionner la table Clients ,
Dans le ruban Créer , cliquer sur le bouton Etat de la section Etats ,
Sans étape intermédiaire, l'
état apparaît en
mode Page au centre de l'écran. Nous obtenons bien une vue des clients issus de la
table Clients . Vous remarquez la présence de lignes pointillées indiquant les bordures de la page. Dans ce contexte, cela signifie que toutes les données ne seront pas imprimées sur une même page, car trop larges. Pour en avoir la confirmation, nous allons demander un
aperçu avant impression :
Cliquer sur la flèche du bouton Affichage dans le ruban,
Dans la liste, cliquer sur Aperçu avant impression ,
L'aperçu coupe l'affichage après le prénom, faute de place. Il faut cliquer sur le bouton Page suivante de la barre de navigation en bas de page pour accéder à la suite des informations. Ce n'est donc pas satisfaisant pour une impression papier.
Cliquer sur le bouton rouge Fermer l'aperçu avant impression dans le ruban,
Vous voilà de retour en
mode Page . Pour pallier le problème d'affichage, nous pouvons commencer par choisir une
orientation paysage plutôt que
portrait pour l'
impression . La feuille sera ainsi plus large que haute.
Cliquer sur l'onglet Mise en page pour activer son ruban,
Puis, cliquer sur le bouton Paysage ,
Vous remarquez que la ligne pointillée est repoussée sur la droite. L'effort reste cependant insuffisant. L'affichage est cette fois coupé après la ville du client. La date de naissance quant à elle est rejetée sur une autre page. Nous pouvons gagner de la place sur la taille des champs. Certains sont trop larges comme la civilité et le prénom. Pour manipuler un
état et modifier la disposition des éléments le composant,nous devons l'afficher en
mode création ou en
mode page .
Cliquer sur le bouton rouge Fermer l'aperçu avant impression dans le ruban,
Cliquer sur la première zone de texte de la colonne champ_civilite ,
Toutes les zones de texte de la colonne sont ainsi sélectionnées. Le fait de modifier la largeur de l'une d'entre elles agit sur toutes les autres.
Placer le curseur de la souris à l'extrémité droite de la zone de texte jusqu'à ce qu'il se transforme en une double flèche indiquant le redimensionnement,
Cliquer et glisser alors vers l'intérieur de façon à réduire la largeur de ces champs ,
Reproduire exactement les mêmes manipulations pour les champs de la colonne Clients_prenom jusqu'à ce que la colonne Clients_dateN soit incluse dans la ligne des pointillés,
Si vous basculez en mode
Aperçu avant impression , vous constatez que toutes les informations du client tiennent désormais sur une même page. Cependant, nous n'allons pas poursuivre les manipulations sur cet
état qui ne présente que très peu d'intérêt. En effet, contrairement aux
formulaires et malgré les
relations ,
Access ne nous propose pas naturellement de construire un
état regroupant les données du client avec ses commandes soit un
état avec un
sous état . Pour le construire nous allons passer par l'assistant. L'objectif final sera de créer un lien entre le
formulaire et l'
état par un bouton. Un clic sur ce dernier permettra d'afficher l'
aperçu avant impression des commandes du client en cours de consultation depuis le
formulaire . Notre application sera alors parfaitement fonctionnelle et automatisée pour les utilisateurs qui doivent gérer ces clients.
Etat avec sous état
Fermer l'onglet de l'état ouvert en cliquant sur sa croix en haut à droite,
Dans le volet de gauche, cliquer sur la table Clients pour la sélectionner,
Cliquer sur l'onglet Créer pour activer son ruban,
Cliquer sur le bouton Assistant état dans la section Etats ,
Dans la boîte de dialogue, choisirTable : Clients dans la liste Tables/Requêtes ,
Cliquer sur la double flèche centrale pour inclure tous ses champs ,
Sélectionner ensuite la table Commandes avec la même liste déroulante,
Inclure tous ses champs sauf Commandes_clients à l'aide de la simple flèche de la partie centrale,
En effet Commandes_clients est la
clé externe liée au champ Clients_num de la
table Clients et déjà intégrée auparavant.
Cliquer sur le bouton Suivant,
Conserver l'affichage par Clients proposé par défaut,
Cliquer sur Suivant,
Nous devons ici ajouter un
niveau de regroupement qui nous permettra de gérer l'
état indépendamment par client. C'est ce qui nous permettra entre autres d'afficher un aperçu d'un client seul. Le champ qui permet d'identifier le client de façon unique est la
clé primaire Clients_num . Pour ce faire :
Sélectionner le champ Clients_num ,
Cliquer sur la flèche de la partie centrale pour ajouter le niveau de regroupement,
Cliquer de nouveau sur Suivant,
Choisir un tri croissant sur le champ Commandes_num ,
Puis, cliquer sur le bouton Options de synthèse ,
Cocher la case Somme pour le champ Commandes_total ,
Puis cliquer sur Ok et Suivant,
Choisir ensuite une disposition échelonnée avec une orientation Paysage ,
Enfin, nommer l'état Clients_et_commandes ,
Et cliquer sur Terminer.
L'aperçu de l'
état s'affiche alors. Il propose sur une même vue les informations du client et l'ensemble des commandes qu'il a passées avec en
option de synthèse , la
somme de ses commandes grâce à la case
Somme que nous avons cochée dans l'
assistant . Néanmoins vous remarquez que l'aperçu est imparfait, puisque certaines informations ne sont pas lisibles ou dépassent. De plus, certaines informations sont nommées automatiquement par l'assistant et ne sont pas très explicites. Nous allons donc améliorer la présentation.
Cliquer sur le bouton Fermer l'aperçu avant impression dans le ruban,
Nous sommes de retour en mode Page.
Afficher l'état en mode création à l'aide du bouton Affichage dans le ruban,
Sélectionner la zone de texte Clients_num de l'en-tête de groupe Clients_num,
La réduire à la même largeur que son étiquette située juste au dessus,
Sélectionner ensuite tous les champs des deux sections du dessous avec leurs étiquettes de la section en-tête de page,
Les déplacer vers la gauche pour les rapprocher du champ Clients_num ,
Réduire la taille du champ Clients_civilite ,
Déplacer le champ Clients_dateN et son étiquette vers la droite,
Agrandir le champ Clients_ville ,
Supprimer les informations du deuxième pied de groupe clients_num ,
Dans le premier pied de groupe, supprimer l'étiquette dans laquelle il est écrit : ="Synthèse pour" & "'clients_num'….
Enregistrer toutes ces modifications (CTRL + S ),
Passer en mode Aperçu avant impression à l'aide du bouton Affichage ,
Vous devriez obtenir un rendu proche de celui proposé par la capture ci-dessus, soit des informations mieux agencées et plus explicites.
Cliquer sur le bouton du ruban permettant de fermer l'aperçu,
Dans le but de relier l'état au formulaire, c'est-à -dire de proposer l'impression de la synthèse du client consulté depuis le formulaire, nous devons d'abord faire en sorte que les clients s'affichent indépendamment. Pour n'afficher qu'un client par page sur l'aperçu, nous devons insérer un
saut de page au niveau de l'
en-tête de groupe Clients_num . C'est ce niveau de regroupement sur le
champ Clients_num que nous avons choisi avec l'assistant qui va nous permettre cette manipulation.
Afficher l'état en mode création ,
Cliquer sur la barre grisée de l'en-tête possédant le champ clients_num ,
Dans le ruban Création , cliquer sur le bouton Feuille de propriétés si celle-ci n'est pas visible,
Dans l'onglet Format de la feuille de propriétés , régler la valeur Saut de page sur Avant section ,
Si vous basculez de nouveau en mode
Aperçu avant impression , vous remarquez que chaque client et ses commandes sont désormais placés sur des pages différentes.
Enregistrer l'état et le fermer,
Lier un formulaire et un état
Sur le
formulaire Clients_et_commandes nous allons donc ajouter un bouton qui commande l'ouverture de l'
état sur le client que nous sommes en train de consulter.
Ouvrir le formulaire Clients_et_commandes en mode création ,
Ajouter un bouton sous les autres à l'aide de la section Contrôles du ruban Création ,
Dans l'assistant qui se déclenche, cliquer sur la catégorie Opérations sur état ,
Dans la liste de droite, sélectionner l'action Aperçu d'un état ,
Cliquer sur le bouton Suivant,
Sélectionner l'état Clients_et_commandes puis cliquer sur Suivant,
Choisir l'image de votre choix dans l'étape qui suit et cliquer sur Suivant,
Enfin, donner un nom, par exemple apercu_client et cliquer sur Terminer,
Afficher le formulaire en mode formulaire ,
Naviguer sur un enregistrement autre que le premier client, par exemple Mr Douch,
Cliquer sur le bouton qui vient d'être créé pour commander l'aperçu avant impression ,
Problème à ce stade comme vous le constatez, l'état se cale par défaut sur le premier enregistrement, soit le premier client, ici Mr Decajou. En effet, le bouton que nous avons créé consiste à ouvrir l'
état mais nous ne lui avons pas dit comment. Par défaut l'
état s'ouvre donc sur le premier
enregistrement . Pour faire coïncider le
formulaire et l'
état , nous devons paramétrer une
condition WHERE avec la
macro qui s'est naturellement greffée à ce bouton. Cette
condition WHERE doit indiquer que l'
état doit s'ouvrir sur le numéro de client (
Clients_num ) actuellement affiché sur le formulaire. En effet, c'est le
champ Clients_num qui identifie de façon unique chaque client.
Fermer l'état ,
Afficher le formulaire en mode création ,
Sélectionner le bouton précédemment créé,
Dans sa feuille de propriétés , cliquer sur l'onglet Evénement ,
Cliquer sur le bouton à trois points en regard de l'événement Sur clic ,
Vous basculez ainsi dans l'
éditeur de macro pour l'action associée au bouton. Comme vous le remarquez, cette
macro commande pour l'instant l'
Aperçu avant impression de l'
état Clients_et_commandes . La zone de la
condition WHERE quant à elle n'est pas renseignée ce qui explique cette absence de lien entre le
formulaire et l'
état .
Cliquer dans le champ de la condition WHERE pour activer la saisie,
Saisir l'expression suivante :[clients_num]=[Formulaires]![Clients_et_commandes]![clients_num],
Vous pouvez vous aider des listes intellisense qui se déclenchent pour la syntaxe en double cliquant sur la proposition adéquate. Nous indiquons que le numéro de client de l'
état [clients_num] doit correspondre au numéro de client du
formulaire duquel nous venons [Formulaires]![Clients_et_commandes]![clients_num].
Enregistrer la macro (CTRL + S ) et la fermer,
Afficher de nouveau le formulaire en mode Formulaire ,
Naviguer jusqu'à un client de votre choix à l'aide des boutons verts, par exemple Mr Douch,
Cliquer sur le bouton commandant l'aperçu ,
Cette fois l'affichage correspond. Le lien a pu être établi d'une part avec ce
saut de section préalable qui sépare les clients et d'autre part grâce à la
condition WHERE de la
macro . L'application devient donc parfaitement fonctionnelle pour sortir en temps réelle la facturation d'un client.