Ajouter un élément dans une liste déroulante – Episode 3
Précédemment, sur nos écrans 🙂 il a été question d’ajouter un élément dans une liste déroulante (tout en le stockant dans une table). L’épisode 1 donnait une première technique simple mais limitée, l’épisode 2 expliquait la variante la plus classique d’Access.
Ce troisième épisode aborde une autre façon de faire, disponible sur Access 2007, Access 2010, Access 2013 (et les autres à venir !). C’est plutôt simple, efficace, pas de code VBA ni de formules magiques.
Scénario
Je dispose de 2 tables :
- une table
tbl Personnes
, avec une liste simple de personnes. Dingue. 🙂 - une table
tbl Tâches
, avec une liste de… Devinez !
Les 2 tables sont liées : 1 personne peut exécuter plusieurs tâches, mais 1 tâche ne peut être faite que par 1 personne (dans ce scénario en tout cas…). On passera ici sur la création des tables et des relations, c’est un autre sujet. Voici le schéma des relations :
Par contre, un point important pour la suite : la relation entre les tables n’a pas été faite manuellement (dans la fenêtre Relations), mais a été construite indirectement à l’aide de l’Assistant Liste de choix. Dans les grandes lignes :
- Vous avez créé vos 2 tables.
- Vous ouvrez la table des tâches (qui dépend de celle des personnes, et est donc située du côté Plusieurs de la relation).
- Vous vous placez sur le champ
Code Personne
. - Dans le type de données, vous choisissez Assistant Liste de choix.
- Vous suivez les différentes étapes pour créer une liste déroulante basée sur la table Personnes.
A la fin, si tout est ok, vous devriez pouvoir :
- Ouvrir la table des tâches en mode de saisie.
- Cliquer dans le champ
Code Personne
. - Obtenir une liste déroulante pour choisir une personne.
Notre problème reste, comme dans les articles précédents, de pouvoir ajouter des personnes dans cette liste !
Les formulaires
Comme pour l’épisode 2 – que je vous conseille de (re)lire -, il vous faut 2 formulaires : le premier pour consulter et mettre à jour les personnes, le second pour consulter et mettre à jour les tâches. Ces formulaires ne présentent pas de piège particulier, les voici pour exemple :
La liste déroulante
Sur le formulaire des tâches, la liste déroulante a été créée automatiquement, parce qu’elle existe déjà au niveau de la table tbl Tâches
. Si vous la déroulez, vous retrouvez les personnes, mais il n’est pas possible d’en ajouter…
Vous pourriez créer un bouton Ajouter une personne, exactement comme dans l’épisode 2… Et ce serait tout à fait correct. Mais il y a bien plus simple dans Access 2007, 2010 et 2013 :
- Ouvrez la table des tâches en mode Création.
- Placez-vous sur le champ
Code Personne
. - Activez l’onglet Liste de choix, en bas de l’écran. Vous devriez y retrouver un grand nombre de réglages, puisqu’une liste déroulante est associée à ce champ.
- Réglez la propriété intitulée Formulaire Modifier les éléments de liste (génial, le nom 😉 ), en y renseignant le nom de votre formulaire Personnes.
- Une balise active (l’icône en forme d’éclair) devrait s’afficher. Cliquez dessus, et choisissez l’option Mise à jour de toutes les propriétés… Ceci aura pour effet de répercuter le réglage dans les objets construits « par-dessus » la table, comme nos formulaires.
Tester !
Ben vala, c’est terminé, vous attendiez sans doute 200 lignes de VBA, désolé de vous décevoir ! 🙂
- Ouvrez votre formulaire de tâches.
- Déroulez la liste des personnes. Vous remarquez que, maintenant, une nouvelle icône s’affiche sous la liste.
- Si vous cliquez sur l’icône, Access ouvre automatiquement le formulaire de personnes dans un nouvel onglet.
- Et lorsque vous refermez cet onglet, vous revenez au formulaire de tâches, avec la liste à jour.
Un grand merci pour cet article. Vraiment simple et efficace. MERCI.
Merci aussi ! 🙂
nexeg > Les ajouts faits par
AddItem
sont dynamiques, ils ne sont donc pas persistants. S’il faut conserver les valeurs nouvelles, la solution naturelle dans Access est bien de baser la liste sur une table.A moins que… La colonne unique contient quoi précisément ?
Bonjour, J’utilise la v2010, avec la possibilité, de la part du système, de rajouter des données dans la LISTE de VALEURs attachée à 1 liste déroulante. Ca marche très bien à partir de la commande AddItem…
Le problème est que lorsque je quitte le formulaire, cette liste est réinitialisée… Je n’ai besoin que d’1 colonne. Je pourrais régler cela à partir d’1 table certes, mais le système me va bien. Par contre, comment garder les évolutions de ma LISTE de VALEURS ?
Merci de votre réponse