Utiliser la fonction "indirect" avec une plage dynamique

Bonjour à tous.

Je souhaite nommer une plage dynamique.
Pour ce faire, j'utiliser la formule suivante : =DECALER($C$2;;;NBVAL($C:$C)-1;1) et je nomme cette sélection "liste_lundi"

Elle semble fonctionner correctement MAIS si j'utilise l'option "validation de données - liste" (pour créer un menu déroulant) et que je mets "indirect" (puisqu'il y a plusieurs listes existantes : "liste_mardi" etc) comme "source" alors il n'y a plus rien qui fonctionne... je n'ai pas de menu déroulant qui apparaît.

Quelqu'un pourrait-il m'aider?
Désolé si ce sujet a déjà été posé mais je ne l'ai pas trouvé.

(le tout sur excel 2010)

Bonjour,

Dans ta liste déroulante ne met que "= liste_lundi" cela devrait fonctionner sauf si tu fais références à un intitulé de cellule

Dans ce cas,

Bonne journée.

Tu as tout à fait raison, ce serait beaucoup plus simple avec le fichier.
J'avais parlé de "liste_lundi" pour essayer de simplifier le problème au maximum.

Pour faire simple :

Dans l'onglet "Paramètres", j'ai placé une liste de "fonction" dans la colonne A et une liste de "cours" dans la colonne B. Dans la colonne C, je choisis manuellement la fonction qui correspond au cours de la colonne précédente.
Ensuite dans la colonne D, je place une liste de noms.
Dans les colonnes de G à Z j'ai mis en entête les noms des cours et juste en dessous, les professeurs qui peuvent donner ces cours (noms de la colonne D).

Dans l'onglet "Attributions 2021-2022" :

J'ai des cours dans la colonne A. La fonction du cours qui apparaît automatiquement dans la colonne B (avec la fonction rechercv) et ensuite dans la colonne C j'aimerais une liste déroulante (et c'est là que j'utilise la fonction indirect car la liste déroulante doit me permettre de choisir parmi la liste de profs qui peuvent donner ce cours).

La fonction indirect ne fonctionne pas si j'utilise =DECALER($C$2;;;NBVAL($C:$C)-1;1) pour délimiter les plages.
Dans le fichier "test" que j'ai joint, j'ai utilisé cette formule pour nommer la plage "français" et le menu déroulant ne fonctionne pas dans la cellule C6.

J'espère que j'ai été plus clair (mais je me rends compte que ce n'est pas très simple).

28test.xlsx (81.07 Ko)

Bonjour,

D'après la documentation, INDIRECT ET DECALER sont incompatibles dans ce sens là. En effet tu vois que dans le gestionnaire des noms, DECALER supprime la référence à l'onglet d'application.

Je te propose donc 2 solutions de contournement ci-contre. Perso je préfère la V2 qui permet la suppression des différents noms bien que tu ais les champs "libres" apparents.

Bonne soirée.

111test-v2.xlsx (80.15 Ko)
117test-v3.xlsx (79.27 Ko)

Merci Ergotamine pour tes 2 solutions.
Ca semble fonctionner.
Pourrais-tu m'expliquer les 2 techniques histoire que non seulement mon problème soit résolu mais en plus que je puisse progresser?

Bonjour

Pour la V2 : J'ai transformé tes paramètres en table structurée et ai renvoyé l'indirect directement vers l'intitulé de colonne. En table structurée ce nom avec les [ ] associé à BDD qui est le nom de ma table renvoie les données présentes en dessous de l'en tête de colonne de la table automatiquement.

Pour la V3 : J'ai gardé ton principe de nom par plage et ai défini la plage Français comme toute la colonne. Donc si je renvoie dans ma liste de validation l'indirect de B6 cela me renvoie l'entièreté de la colonne.

Par la suite je réalise ta formule décaler comme tu l'as fait pour définir ton nom, sauf que je le fais directement dans ma liste de validation. Mon décaler part donc d'INDIRECT(B6) donc de Paramètres!M:M et donc de Paramètres!M1, que je décale d'une ligne pour partir de la deuxième ligne, sur une hauteur de NBVAL(INDIRECT(B6)) donc de NBVAL(Paramètres!M:M) pour avoir l'ensemble des valeurs contenues dans la colonne M. Auquel je retire 1 pour retirer l'en tête de colonne.

=DECALER(INDIRECT($B$6);1;;NBVAL(INDIRECT(B6))-1)

Si tu as besoin de plus d'explications n'hésites pas.

Bonne soirée.

Merci beaucoup pour la solution mais surtout pour les explications.
Je crois avoir tout compris.
Je préfère la v3 (certainement parce que plus proche de ma manière de faire au départ).

Bonne soirée.

Rechercher des sujets similaires à "utiliser fonction indirect plage dynamique"