Est-il possible de renseigner des paramètres lors de l'appel à une expression nommée ?

Bonjour,

J’ai nommé une expression qui me permet d’accéder à une liste stockée dans une colonne.
Actuellement, si mon expression est appelée en ligne 1, tout va bien, car la liste d’origine est stockée dans une feuille en A1:A60, mais j’aimerais pouvoir appeler mon expression en y renseignant un paramètre indiquant la première ligne : en gros ma syntaxe ressemblerait à %ligne_initial expression_nommée_fonction_de_ligne_initial.

Est-ce possible sans macro ?

EDIT : J’ai contourné le problème en créant une feuille de paramètres et en modifiant mon expression nommée afin qu’elle aille y lire les informations stockées. Seulement, cela complexifie significativement l’expression, d’autant plus si la liste doit être appelée plus d’une fois par feuille ou si l’on souhaite transmettre plusieurs paramètres. Dans ma feuille de paramètres, je note le nom de la feuille concernée, son numéro est calculé automatiquement, et je rentre la ligne initiale souhaitée. L’expression effectue alors une recherche du numéro de la feuille sur laquelle l’expression est appelée et en cas d’occurrence, renvoi le paramètre de ligne initiale. Pour information si certains sont intéressés, voici ma formule :

SI(INDIRECT(ADRESSE(SI(ESTNA(RECHERCHEV(FEUILLE();Paramètres.$B$3:$C$20;2;0));LIGNE();LIGNE()-RECHERCHEV(FEUILLE();Paramètres.$B$3:$C$20;2;0)+1);1;3;;"Liste Matériaux"))=0;"";INDIRECT(ADRESSE(SI(ESTNA(RECHERCHEV(FEUILLE();Paramètres.$B$3:$C$20;2;0));LIGNE();LIGNE()-RECHERCHEV(FEUILLE();Paramètres.$B$3:$C$20;2;0)+1);1;3;;"Liste Matériaux")))

Où la plage B3:C20 contient les numéros de feuille en B et la ligne initiale souhaitée en C. Rappel : la liste est stockée sur la feuille “Liste Matériaux” en A1:A60

Si l’on souhaite avoir plusieurs fois la liste sur une même feuille, il faudrait alors d’une part tester le non chevauchement, et d’autre part, se baser sur l’adresse exacte de la cellule en plus du numéro de feuille.

Je laisse ma question en non-résolue car je souhaiterais tout de même savoir s’il existe une fonctionnalité “built-in” permettant de simplifier l’opération

Merci

Cordialement,

gZen0n

Ben ça y’est, j’ai ma migraine dès le matin.

Bonjour

Sans “voir” le classeur (on n’a pas toujours l’esprit assez clair pour visualiser sans exemple, ni le temps d’essayer de bâtir un classeur exemple complexe) et de ce que je comprends (@Pierre DeCambrai +1), tu cherches à obtenir ième élément de ton expression nommée. Si c’est bien cela, en ayant par exemple :

  • Feuille Liste Matériaux
  • qui comprend en A1:A60la liste des matériaux,
  • plage que je nomme matériaux

tu peux obtenir le ième élément de matériaux, par exemple le 3ème, avec la formule =INDEX(matériaux;3;1)

Mais sans doute n’est-ce pas si simple ?

Cordialement

Bonjour, vous avez bien saisi mon objectif, à quelques détails près, je ne connaissais pas la fonction, et en effet, cela simplifiera mes expressions en remplaçant INDIRECT(ADRESSE()). Je vous remercie. En réalité, je souhaite pouvoir réutiliser la liste dans différents formats sur l’ensemble du document. Horizontalement, verticalement, avec des intervalles entre chaque ligne etc…L’utilisation d’une seule expression pour l’ensemble des cas me rend l’esprit plus clair lorsque je travaille sur d’autres aspects du document, de plus cela me permet de déplacer mes cellules dans le documents sans me soucié des références, car je n’ai qu’à modifier les paramètres pour que tout soit en place, et je peux en protéger l’écriture. J’ai plus l’habitude de la programmation orientée objet, et je recrée donc le fonctionnement des fonctions dont j’ai l’habitude… Peut-être cela me vaudra-t’il des déboires liées aux limites du logiciel, mais pour le moment, ce que j’expérimente me convient.
Cdlt

Bonjour,

Réponse un peu généraliste : une expression nommée n’est pas une fonction, elle n’admet pas d’argument en entrée. Toutefois, l’expression elle-même peut contenir des références à des cellules ou à des plages. tu as trouvé une des manières de faire varier les paramètres avec FEUILLE() qui récupère le N° de la feuille en cours (celle où se trouve l’expression nommée) combinée à RECHERCHEV().

Une autre manière est de faire référence, dans l’expression nommée, à une cellule ou une plage en relatif. Par exemple si je crée, A2 ayant le focus, l’expression nommée Voisine qui contient A1, si je mets =Voisine en C3, alors elle récupérera le contenu de C2 !
Bien sûr, ce procédé est, par construction, limité.

Cordialement,

En effet, ça a été ma première idée, cependant, certaines feuilles utilisant l’expression sont des outils qui deviendraient difficilement lisibles s’ils étaient pollués d’information inutiles. Merci de votre réponse

gZen0n

Imagine une formule nommée, dans une cellule particulière, faisant appel à un paramètre contenu dans la cellule de gauche. Si cette colonne de gauche est masquée, la lisibilité n’en est pas affectée…
Cordialement,