Reformatage et Affichage des Contacts dans un Formulaire Access

Réalisation d'une zone de liste ou d'une zone de liste déroulante
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Apprendre Microsoft Access 2013
Revoir le teaser Je m'abonne
Transcription

59,90€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Description Programme Avis

59,90€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Les objectifs de cette vidéo sont de vous apprendre à reformater un formulaire client et à utiliser une zone de liste pour afficher des contacts spécifiques à un client dans Access.

Apprenez à reformater un formulaire client et à afficher la liste des contacts associés dans Microsoft Access.

Cette leçon vous guide à travers le processus de reformatage d'un formulaire client dans Access, vous montrant comment transformer ce formulaire en une fenêtre modale indépendante avec des champs et des boutons redistribués. L'objectif est de mettre en place un tableau pour visualiser les contacts associés à un client spécifique.

Pour ce faire, nous utilisons une zone de liste, en désactivant les assistants et en reliant cette zone à une requête basée sur une table de contacts clients. La leçon détaille chaque étape, depuis la création de la zone de liste jusqu'à la configuration des propriétés et la mise en œuvre des critères de sélection pour filtrer les contacts par client.

En fin de compte, nous nous assurons que la zone de liste affiche uniquement les contacts pertinents pour le client actuellement sélectionné dans le formulaire, avec des intitulés de colonnes et des actualisations automatiques lors de la navigation entre les enregistrements. Cette fonctionnalité est cruciale pour une gestion efficace des données clients dans Access.

Voir plus
Questions réponses
Comment désactiver les assistants pour une zone de liste dans Access ?
Pour désactiver les assistants, décochez l'option 'Utiliser les assistants Contrôle' avant de tracer la zone de liste.
Pourquoi est-il important de filtrer les contacts par client dans une zone de liste ?
Il est important de filtrer pour afficher uniquement les contacts pertinents pour le client actuellement sélectionné, améliorant ainsi la précision et l'efficacité de la gestion des données.
Quelle commande utiliser pour actualiser la zone de liste lors du changement d'enregistrement ?
Utilisez la commande Actualiser dans le générateur de macro sur l'événement 'Sur activation' pour actualiser la zone de liste.
Après reformatage, voilà à quoi ressemble le formulaire client tel que j'ai pu le réaliser pour les besoins de l'exercice à suivre. Ce formulaire est donc maintenant un formulaire indépendant, en fenêtre modale, avec des champs qui ont été répartis tout autour de la zone de formulaire, des boutons qui ont été également redistribués, et je souhaite maintenant mettre en place un tableau qui permet de visualiser pour un client donné la liste des contacts que je peux avoir chez ce client. Pour cela, il faut comprendre que si je veux voir un tableau affichant la liste des contacts clients que j'ai pour le client qui est en cours d'affichage dans le formulaire, je vais avoir besoin de créer un tableau. Pour créer ce tableau, je vais utiliser un objet qu'on appelle la zone de liste. Pour y arriver, dans la section création du groupe outils de création de formulaire, dans la section contrôle, je vais aller chercher l'objet zone de liste. Avant de cliquer sur cette zone de liste, je vais prendre la précaution de désactiver les assistants. Pour cela, je vais ici décocher utiliser les assistants contrôle. Je vais donc tracer une zone de liste qui correspond à la zone du tableau qui va être représentée sur mon formulaire. Une étiquette apparaît, liste 31, avec ici une zone indépendante. Je précise que le numéro qui est précisé dans l'étiquette n'a aucun intérêt, on verra tout à l'heure qu'on pourra bien sûr renommer cette liste comme on le souhaite. Liste 31, je vais par exemple ici saisir l'étiquette liste des contacts de ce client pour pouvoir ensuite y insérer les données. Si je veux avoir les contacts d'un client donné, ma table contacts, par exemple, contient le nom, le prénom et la fonction. Je veux donc que ma zone de liste qui se trouve dans fClient affiche les noms, prénoms et fonctions des contacts que j'ai dans l'entreprise qui est en cours d'affichage dans fClient. Pour cela, voilà comment je vais procéder. Premièrement, je vais appeler les propriétés de cette zone de liste. Je vais aller dans l'onglet Données, Contenus, et je vais indiquer que le contenu de cette zone de liste dépend du résultat d'une requête. Cette requête repose sur la table tContactClient. Cette table tContactClient va me fournir les résultats pour le client qui est en cours d'affichage. Le principe est relativement simple. Je vais appeler le générateur de requêtes sur la base de cette table. Pour le moment, c'est conforme à ce que nous avons fait dans le cadre des tables et l'utilisation des zones de liste déroulantes qui reposent sur des requêtes. Je crée une requête fondée sur cette table et j'arrive ici dans l'interface qui permet de gérer les requêtes. Si je me base maintenant sur ce qu'on a dit qu'on voulait voir affiché dans ma zone de liste, je vais double-cliquer sur le nom, le prénom et la fonction. Je vais fermer ma requête et on va constater ensemble que lorsque je vais exécuter mon formulaire, apparaît ma liste de contacts, simplement je n'ai que les noms de mes contacts qui apparaissent. Si j'indique maintenant que ma zone de liste, qui est ici, dans les propriétés de cette zone de liste, onglet format, est composée de trois colonnes. J'ai tracé une liste d'une largeur de 11,199. Je vais demander à Access de la rondir à 12,5 cm. Je m'accorde cette marge de 0,5 cm parce que c'est pour éviter les calculs binaires d'Access en conversion entre le pouce qui est la valeur informatique et les centimètres qui est l'unité de mesure utilisée ici. Donc pour éviter ces problèmes de mesure, je m'accorde une marge de 0,5 cm. Ainsi si j'indique que ma largeur de colonne est de 3 x 4 cm, 4.4.4, j'obtiens donc bien 12 cm, j'aurai alors la liste des contacts qui apparaît. Mais au final, il me manque les intitulés de colonne. C'est là où, bien sûr, je pourrais préciser que dans le format de cette zone de liste, je souhaite l'utilisation des entêtes de colonne. Alors on pourrait croire que c'est fini. Mais regardons ensemble. Je vois donc un tableau qui affiche les noms, prénoms et fonctions des différents contacts. Mais est-ce que Albert Dupont, Rose Dupont et X sont des contacts qui travaillent au sein de la société Test1 ? Quand on repart dans nos tables, on se rend compte que la société Test1 n'a comme salarié que Albert Dupont et X. Donc Rose Dupont n'a pas à figurer dans le résultat de la requête. Il y a une raison bien simple. C'est qu'à l'heure actuelle, je demande à Access de me lister tous les contacts présents dans la table Contacts clients dans ma zone de liste. Ce qu'Access fait, bien sûr. Mais si maintenant, j'indique à Access que je souhaite que ma requête, qui se trouve dans l'onglet Données, Contenus, soit filtrée sur la base du champ Clients. Alors comprenons-nous bien. Pourquoi est-ce que je vais utiliser le champ Clients comme filtre supplémentaire ? Eh bien tout simplement parce que quand je regarde le schéma relationnel que nous avons réalisé, ma requête interroge la table Contacts clients, affiche le nom, le prénom et la fonction. J'ai un formulaire qui est mon formulaire FCLIENTS qui repose sur ma table CLIENTS et ce formulaire utilise un champ qui est le champ Numéro de clients qui est ici. Logiquement, puisque ce numéro de clients qui est ici est stocké dans le champ Clients qui est ici, dans la table Contacts clients, alors dans ma requête, si j'utilise comme critère de sélection pour le champ Clients, le numéro de clients cité dans FCLIENTS, alors dans le formulaire CLIENTS, quand j'aurai le client Test1 qui apparaîtra, je connaîtrai son numéro de clients et je l'appliquerai comme filtre à ma requête et alors je garantis que je n'aurai dans ma zone de liste que les contacts du client Test1. Ainsi, dans la requête qui est attachée à cette zone de liste, si j'ajoute en critère de sélection le champ Numéro clients du formulaire FCLIENTS, et bien logiquement mon filtre sera opérationnel. Pour trouver les champs disponibles dans le formulaire FCLIENTS, je vais appeler ce qu'on appelle le générateur d'expression. Dans ce générateur d'expression, je déroule mon fichier AccessACCDB, je vais aller chercher la catégorie Formulaires, je vais aller chercher la catégorie Tous les formulaires, je vais y trouver le formulaire FCLIENTS et dans ce formulaire FCLIENTS, je retrouve bien le champ Numéro de clients qui peut me servir de filtre. Je double-clic sur NumCLIENTS, je valide par OK, après avoir vérifié que ma zone de rédaction comprend bien Formulaires, donc la catégorie des objets, FCLIENTS, le formulaire concerné, NumCLIENTS, le champ qui m'intéresse, je valide par OK et je retrouve donc ceci dans mon critère de sélection. Ainsi, j'enregistre la requête après modification et je vérifie ici en mode affichage que mon tableau affiche bien le résultat pour le client Numéro 7, puisque c'est ce numéro de client qui est utilisé dans ma requête comme filtre pour afficher les contacts de ce client. On pourrait croire encore une fois que c'est fini, mais pas vraiment, il reste une dernière chose à vérifier, c'est que lorsque je passe de la société Test à une autre société, il faut bien sûr que les données du tableau s'actualisent. Quand je change ici d'enregistrement, je constate en fait que cette actualisation n'est pas automatique, cela paraît logique, rien ne dit à Access que je souhaite une actualisation de ce tableau lorsque je change de valeur à cet endroit. Il va donc falloir trouver une solution pour actualiser cette liste qui contient les contacts clients à chaque fois que nous changeons les enregistrements au sein du formulaire. Préalablement à ce besoin, nous allons passer en mode création, on va essayer déjà de comprendre comment cette zone de liste a été nommée, donc on va cliquer sur la zone de liste en question. Dans les propriétés de cette zone de liste, on voit que cette liste s'appelle list31, on peut bien sûr renommer cette zone de liste dans l'onglet autres de cette zone de liste en lui attribuant le nom de listContactClient. Bien sûr, je ne mets pas de pluriel dans le nom des objets pour éviter de complexifier les noms des objets. Donc ici nous avons créé ce nom de listeContactClient, ce qu'on souhaite maintenant c'est que lorsque il y a un changement d'enregistrement dans le formulaire, qu'il y ait une actualisation automatique des données, cela est relativement simple. Ici dans les propriétés du formulaire, je vais dire à Access que l'événement déclencheur qui consiste à changer d'enregistrement, ce qu'on appelle une activation, et bien cet événement déclencheur va, lorsqu'il va se produire, exécuter une action d'actualisation au sein du formulaire. Je vais donc sur la ligne suractivation appeler le générateur de macro, puisque à chaque fois qu'on change d'enregistrement je souhaite que cette actualisation intervienne, et je vais appeler dans mon générateur de macro la commande Actualiser. Cette commande Actualiser va permettre en fait, lorsque je suis en mode affichage, de procéder à l'actualisation de tous les sous-objets prévus dans le formulaire client. Ici la listeContactClient est un sous-objet, et bien quand je change d'enregistrement, je constate bien qu'il y a une actualisation des données dans mon formulaire, et surtout dans le tableau qui présente les contacts de ce client. Voilà donc pour la réalisation d'un tableau qui présente des données d'une table associée dans un formulaire principal, c'est le cas ici du formulaire client et de la liste des contacts de ce client, et c'est une fonctionnalité qui est bien sûr très intéressante, puisqu'on voit ici l'intérêt purement applicatif de ce type de fonction.

Programme détaillé de la formation

Nos dernières formations Access