I - Les listes déroulantes ? Mais c'est tout simple !
Avouez que les listes déroulantes améliorent grandement le confort d'utilisation de vos logiciels. Voici quelques petits rappels pour bien les utiliser.
D'abord, pour illustrer notre propos, donnons-nous deux tables ARTICLES et FAMILLES structurées comme ci-contre.
Créons ensuite, dans un formulaire quelconque, une liste qui permettra à l'utilisateur de choisir une famille d'article parmi celles répertoriées dans la table FAMILLES.
Pour cela, nous utiliserons la boîte à outils du formulaire ouvert en mode modification et nous ferons glisser, vers ledit formulaire, l'icône correspondant à la liste déroulante
Puis, après avoir modifié à notre convenance l'étiquette qui accompagne le nouvel objet, faisons apparaître la feuille de propriétés de celui-ci par un bon vieux double-clic.
Pour que la liste affiche le contenu de la table FAMILLES, cliquons sur l'onglet Données de la feuille de propriétés et tapons FAMILLES en face de la propriété Contenu.
Cliquons ensuite sur l'onglet Format et tapons :
- 2 pour la propriété Nbre colonnes
- 2cm;5cm (par exemple) pour la propriété Largeurs colonnes, ce qui spécifie que la première colonne doit avoir une largeur de 2 centimètres et la deuxième de 5 centimètres.
Pour bien faire, donnons à la propriété Largeur liste la valeur 7cm (c'est à dire 2 + 5) pour être sûr que la liste ne présente pas une barre de défilement horizontale disgracieuse.
Visualisons maintenant le formulaire, nous devrions obtenir le résultat ci-contre.
II - Une seule colonne SVP !
Vous devez penser que l'utilisateur de votre application Access n'a pas besoin de voir le code de la famille en regard de l'intitulé et que ce dernier est suffisant. Qu'à cela ne tienne ! Pour masquer une colonne d'une liste, il suffit de lui donner une largeur égale à zéro.
Cliquons sur l'onglet Format de la feuille de propriétés de notre liste et tapons en face de la propriété Largeurs colonnes : 0cm,5cm pour bien spécifier que la première colonne doit avoir une largeur de 0 centimètre. Accessoirement, réduisons à 5cm la propriété Largeur Liste
Visualisons le formulaire et admirons (si je puis dire) le résultat.
Important : Access donne 1 (par défaut) à la propriété Colonne liée (onglet Données) des listes déroulantes, ce qui veut dire que la valeur retournée par votre liste sera celle de la première colonne de la ligne que l'utilisateur aura choisie. Dans notre exemple, c'est le code de la famille et nous avons justement décidé de l'occulter. Quel valeur la liste va-t-elle retourner dans ce cas ? Eh bien, ce sera toujours le code famille, même s'il est invisible.
III - Une seule colonne... et du texte
Autre cas de figure : vous voudriez que les deux colonnes de la liste (le code et la l'intitulé de la famille) soient visibles lorsqu'on déroule la liste, et qu'après choix du code, celui-ci reste affiché dans la liste et que l'intitulé, lui, soit affiché dans une zone de texte à côté de ladite liste. Comme ci-contre...
Pour cela, redonnons à notre liste les propriétés définies en I (largeurs des colonnes égales à 2cm, 5cm et largeur de la liste égale à 7cm). Ensuite, grâce à la boîte à outils, créons une zone de texte à côté de notre liste. Dans la feuille de propriétés de celle-ci (onglet Données), donnons à la propriété Source contrôle la valeur :
=cboFamille.column(1)
Dans cette formule, issue du langage VBA, CboFamille ne représente que le nom que porte la liste de notre exemple. Il faudra le remplacer par le nom de votre liste à vous. Mais ce qui importe, c'est le .column(1) qui signifie que l'on veut la valeur de la deuxième colonne de la liste cboFamille. Oui, les colonnes sont numérotées à partir de 0, la première portant le numéro 0 et la deuxième le numéro 1.
C'est comme cela qu'on numérote les éléments d'une collection en VBA. Il faudra souvent vous en souvenir.