Listes déroulantes en cascade — la source est un tableau (3/3)

File:Jonathan's Run Falls.jpgEt dernier volet de notre trilo­gie sur les listes en cas­cades.

On va voir ici une tech­nique qui per­met de con­sid­ér­er une table réca­pit­u­la­tive de toutes les listes comme étant la source des don­nées.

Cliquez ici pour accéder au fichi­er de la for­ma­tion.

ATTENTION, cette tech­nique ne fonc­tionne que si la table est triée sur la pre­mière liste (ici Domaine de for­ma­tion), et si pos­si­ble, on préfér­era les deux autres tech­niques. Je pense cepen­dant que cette approche peut s’avér­er utile dans cer­tains cas.

Sup­posons donc que pour une rai­son incon­nue ;-), la liste se présente sous cette forme :

On va gér­er à part la liste des domaines de for­ma­tion, comme fait dans le pre­mier épisode :

Déf­i­ni­tion du nom :

Ajout de la liste via la val­i­da­tion des don­nées :

On va ensuite gér­er la liste dynamique basée sur le choix du domaine de for­ma­tion :

excel-listes-deroulantes-en-cascades

On va ensuite utilis­er cette très jolie for­mule que l’on met­tra dans la val­i­da­tion des don­nées de la plage B6

=DECALER(Liste!$B$1;EQUIV($B$3;Liste!$A:$A;0)-1;0;NB.SI(Liste!$A:$A;B3);1)

Qui se lit de la manière suiv­ante :

- DECALER : ren­voit la plage

- Liste!$B$1 : démar­rant en B1 dans la feuille Liste

- EQUIV($B$3;Liste!$A:$A;0)-1 : Cal­culer ensuite la ligne de la pre­mière occurence de la cel­lule B3, moins une cel­lule pour la ligne de titre. En com­bi­nant avec DECALER, on va donc ren­voy­er la pre­mière cel­lule de la plage.

- NB.SI(Liste!$A:$A;B3) : cal­culer le nom­bre de fois où B3 est présent dans la liste, de fait, on va retourn­er la hau­teur de la liste

- On com­bine le tout pour ren­voy­er la plage con­tenant la liste et on ajoute à la val­i­da­tion des don­nées :

Et c’est fini !

A bien­tôt

Gae­tan

-

En cadeau de bien­v­enue : les 7 com­bi­naisons de touch­es indis­pens­ables sur Excel

Listes déroulantes en cascade — gérer des noms longs avec espaces (2/3)

800px-BurneyFallsDeux­ième épisode de la série sur les fan­tas­tiques listes déroulantes en cas­cades !

Dans l’épisode précé­dent, on a vu com­ment créer des listes en cas­cades. On va repren­dre ici le même principe, mais pour gér­er des listes con­tenant des espaces.

Cliquez ici pour accéder au fichi­er de la for­ma­tion.

Par exem­ple, sup­posons que gériez un cen­tre de for­ma­tion et que vous vouliez choisir un domaine de for­ma­tion, qui va ensuite nous don­ner une liste de for­ma­tion pos­si­ble.

Les domaines de for­ma­tion étant un peu com­plex­es, vous allez avoir des noms comme :

- For­ma­tion de base sur Excel

- For­ma­tion avancée sur Excel

Et ensuite, on va retrou­ver un cer­tain nom­bre de for­ma­tions pour chaque domaine.Le but étant d’ar­riv­er à ceci :

Le prob­lème est que la fonc­tion Indi­rect ne pour­ra pas lire ces noms de domaine, car ils con­ti­en­nent des espaces.

Une solu­tion pos­si­ble con­siste donc à ajouter dans la liste des domaines, le nom du domaine sous la forme d’un code, ce qui per­me­t­tra de s’y retrou­ver.

1/ On aura ain­si la table suiv­ante :

2/ Il faut ensuite à ajouter les noms F_Base_Excel et F_Avancee_Excel au fichi­er pour les types de for­ma­tion, ici pour F_Base_Excel :
Sélec­tion­nez E2:A4, dans la zone de noms, tapez F_Base_Excel et validez par entrée.
De même pour la plage G2:G4.

Et ici pour F_Avancee_Excel

3/ On va ensuite ajouter une for­mule un peu com­plexe qui va per­me­t­tre de retourn­er le code for­ma­tion, qu’on utilise ensuite dans une for­mule indi­rect pour la suite.

Et la for­mule est la suiv­ante pour la cel­lule D3 (avec Liste étant le nom de la feuille con­tenant les listes de départ):

=INDIRECT(INDEX(Liste!$B$2:$B$3;EQUIV(C3;Liste!$A$2:$A$3;0);1))

4/ Vous pou­vez donc main­tenant utilis­er un nom com­plet avec des espaces pour ensuite chang­er la liste des for­ma­tions appar­tenant à ce domaine.

A bien­tôt pour le 3e épisode!

Gaë­tan

En cadeau de bien­v­enue : les 7 com­bi­naisons de touch­es indis­pens­ables sur Excel

Listes déroulantes en cascade — Introduction (1/3)

450px-Cascades_d'OuzoudBon­jour à tous,

La créa­tion de listes en cas­cade per­met de gér­er une liste déroulante qui se mod­i­fie en fonc­tion du choix d’une autre liste déroulante.

Cliquez ici pour accéder au fichi­er de la for­ma­tion.

Par exem­ple, vous voulez choisir une mar­que de voitures pour ensuite accéder aux mod­èles cor­re­spon­dants, ou encore vous voulez choisir un type d’al­i­ment pour ensuite aller à la liste des ali­ments cor­re­spon­dants :

Choix des fruits :

liste_en_cascade_1

Choix des légumes :

liste_en_cascade_2

Ces listes dynamiques en cas­cade se créent de la manière suiv­ante :

1/ Créez trois listes dans une feuille séparée. La pre­mière liste va avoir les items suiv­ants : Fruits et légumes. Puis, la liste détail­lée des fruits, puis la liste des légumes.

2/ Nom­mez cha­cune des listes (à gauche de la zone de for­mule, vous avez la zone de nom), idéale­ment après avoir défi­ni un tableau par liste. Par exem­ple, la liste des fruits est nom­mées Fruits et la liste des légumes est nom­mée Légumes. Ça nous donne ceci:

liste_type_aliments

3/ Dans une nou­velle feuille, par exem­ple en A2, choi­sis­sez la pre­mière liste, via Don­nées — Val­i­da­tion — Liste et en met­tant la référence cor­re­spon­dante (ici Type_Aliments). Donc, vous aurez une liste avec le choix Fruits, Légumes.

4/ Dans une autre cel­lule qui va recevoir le choix du pro­duit, choi­sis­sez Don­nées — Val­i­da­tion — Liste, et tapez =INDIRECT(A2). La fonc­tion indi­rect va ren­voy­er la plage nom­mée cor­re­spon­dant à A1, donc la plage Fruits ou la plage Légumes.

liste-dynamiques-donnees-validation-indirect

C’est fini !

Gaë­tan

En cadeau de bien­v­enue : les 7 com­bi­naisons de touch­es indis­pens­ables sur Excel