Rechercher dans ce blog

Ce blog vous a été utile ?

Si les conseils et cas pratiques de ce blog vous ont rendu service, et si vous trouvez équitable d'encourager son auteur, il vous propose de vous rendre sur le site des éditions AO et d'y commander un livre de votre choix. Vous verrez, il y a de nombreux titres au catalogue – en plus des 100 conseils pour mieux utiliser Excel.

vendredi 22 février 2008

Des listes de saisie évolutives

De quoi s'agit-il ?
Pour assurer l'homogénéité de la saisie dans un tableau, vous faites peut-être appel à ce qu'Excel nomme des Validations, autrement dit des restrictions à la saisie de données dans des cellules, qui se manifestent au moment de la validation de la saisie dans ces cellules – d'où leur nom.
À ce propos, vous pouvez consulter le conseil 90 de l'ouvrage (page 316).

Quand il s'agit de proposer une liste des valeurs autorisées dans une cellule, il est d'usage de créer une plage nommée, puis de l'affecter aux cellules concernées (à l'aide de la commande de menu Données > Validation).



Dans l'exemple ci-dessus, une table des fruits vendus est créée afin d'encadrer la saisie des ventes. La plage B3:B12 est nommée TableFruits. Remarquez que des lignes vides sont ménagées en fin de liste afin d'ajouter sans difficultés de nouveaux fruits.



En situation de saisie, la plage TableFruits a été affectée à la colonne C en tant que liste de validation. C'est commode… sauf qu'une zone blanches inesthétique et sans objet apparaît en pied de la liste. En outre, elle semble indiquer qu'il est autorisé de ne rien saisir dans la cellule.

Rendre la liste dynamique
Comment limiter la hauteur de la liste afin qu'elle ne présente que les lignes comportant un nom de fruit ?
La solution passe par la définition d'une seconde plage nommée, par exemple ListeFruits, qui sera employée en tant que validation. La définition de cette plage sera effectuée dynamiquement en incluant une formule Excel directement dans la zone de définition de plage (commande de menu Insertion > Nom > Définir).



Pour connaître le nombre de lignes remplies à tout moment, créez une plage nommée NbFruits (nombre de fruits) en D2, en insérant la formule =NBVAL(TableFruits), qui se contente de compter le nombre de cellules non vides de la plage, soit 4 dans l'exemple (Pomme, Orange, Banane et Raisin).



Actionnez alors la commande de définition de plage, et, dans le dialogue, saisissez directement la formule de calcul ci-dessous :

=Tables!$B$3:DECALER(Tables!$B$3;NbFruits-1;;)

Cette formule définit une plage commençant en B3 et se terminant (observez les deux points qui désignent les bornes d'une plage) à un endroit variable, fonction du nombre de fruits.
C'est l'objet de la fonction DECALER, qui, dans cet exemple, décale B3 du nombre de lignes non vides de la plage (moins une ligne pour tomber juste).

Dans la situation reproduite précédemment, le décalage porte sur 4 (la valeur de la plage NbFruits) moins 1, soit 3 lignes à partir de B3, ce qui correspond à B6. De fait, la plage des valeurs remplies commence en B3 (Pomme) et se termine en B6 (Raisin).



Modifiez la plage servant de validation à la saisie, en choisissant ListeFruits en lieu et place de TableFruits.



Dès lors, la liste de valeurs ne fait apparaître que les 4 lignes de fruits disponibles.



Si, maintenant, un nouveau fruit, le citron, est ajouté dans la table des fruits, la fonction NBVAL se met à jour et indique 5 (au lieu de 4).



Automatiquement, et sans qu'aucune autre action ne soit nécessaire, la liste de valeurs proposée à la saisie s'est enrichie de la valeur Citron, qui peut désormais être employée.

Le classeur ayant servi à cet exemple est à votre disposition sur simple demande. Utilisez la page contacts de mon site de références professionnelles http://jeanluctafforeau.com

Aucun commentaire: