formateur informatique

Apprendre à créer des états Access et à les relier aux formulaires

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Apprendre à créer des états Access et à les relier aux formulaires
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram


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.
Formulaire Access avec 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,
Création instantané état Access sur une table
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,
Aperçu avant impression état instantané Access
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,
Orientation paysage état Access
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,

Disposition éléments état Access
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,
Etat avec sous-état, assistant Access
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,
Niveau de regroupement assistant sous état Access
  • 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,
Aperçu avant impression état avec sous-état
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,
Saut de page avant section pour séparer les enregistrements
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,
Bouton de formulaire pour ouvrir 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 formulaireen 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],
Condition Where macro pour ouvrir état depuis formulaire
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.
Correspondance entre état et formulaire Access

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn