Fonction indirect et listes dynamiques

  • Initiateur de la discussion Initiateur de la discussion Traouck
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Traouck

XLDnaute Junior
Bonjour,
j'essai de faire des listes de validation ainsi que des sous listes de validation.
Cela ne pose pas de problème en téhorie avec la fonction INDIRECT. Sauf que quand la liste est une liste dynamique, impossible de faire fonctionner cette fonction.
Quelqu'un aurait il une parade à ça?

Je mets le fichier en pièce jointe pour que ce soit plus claire.
 

Pièces jointes

Re : Fonction indirect et listes dynamiques

Bonjour,

En nommant plus long que nécessaire la plage "Fournisseurs", D2😀100 par exemple
Dans la liste de validation, tu tapes :
=DECALER(Fournisseurs;;;NBVAL(Fournisseurs))
et tu obtiens une liste sans blanc

Sauf que je n'ai pas compris quoi dépend de quoi.
 
Re : Fonction indirect et listes dynamiques

Bonjour,

J'ai completer le tableau avec des couleurs pour que ce soit peut etre un peu plus claire.
En fait il s'agit de comptabilité.
Je choisi d'abord une catégorie, puis ensuite avec la fonction indirect, cela me permet de choisir dans une liste de fournisseur de cette catégorie. Et ensuite, via une combinaison d'indirect et de index equiv, j'arrive a faire apparraitre à quoi cela correspond. Par exemple, si je choisi frais gérénraux dans un cellule, je peux choisir France télécom dans la seconde, puis Téléphone dans la troisième.
Tout cela marche très quand je nome une liste "fixe".
Sauf que je suis souvent obliger de rajouter des fournisseurs et pour voir apparaitre les derniers rajoutés, je nome une liste "dynamique" à l'aide de la fonction décaler.
Le problème est que quand je fais une liste de validation sur une liste "dynamique", j'ai un message d'erreur et impossible de faire apparaitre ma liste de validation dans la cellule.
Chose qui ne se produit pas avec des listes fixes.
Revoici le fichier un peu plus complet.
 

Pièces jointes

Re : Fonction indirect et listes dynamiques

Monique à dit:
Bonjour,

En nommant plus long que nécessaire la plage "Fournisseurs", D2100 par exemple
Dans la liste de validation, tu tapes :
=DECALER(Fournisseurs;;;NBVAL(Fournisseurs))
et tu obtiens une liste sans blanc

Sauf que je n'ai pas compris quoi dépend de quoi.
Salut à tous
Si j'ai bien saisis le problème :
le nom de la liste de validation pour C2, dépend du choix de la cellule B2
source : = liste dont le nom est en B2

Je poste parce que je cherche aussi, mais, les palliatifs que j'ai trouvé ne sont pas probant. Mais je piquerais la première réponse qui me conviendra 😛

A+
NB en pièce jointe, une idée de ce que j'appelle un palliatif 😀
 

Pièces jointes

Dernière édition:
Re : Fonction indirect et listes dynamiques

Tu as bien compris.
Si tu as une liste fixe, aucun problème, il suffit d'aller en c2 d'aller dans données, validation, liste et de taper la formule =(indirect(le nom de la cellule en b2). Par contre, il faut que ce nom corresponde au nom d'une liste que tu auras créé précédemment. Si tu veux, j'ai un fichier tout simple pour l'exemple.
 
Re : Fonction indirect et listes dynamiques

Re,

Avec Decaler() et sans Indirect()
Sans la plage "SsCat"

Il y a peu de plages nommées, on décale toujours la même,
plus ou moins vers la droite.

La formule Decaler() est expliquée dans le fichier (j'espère)
 

Pièces jointes

Re : Fonction indirect et listes dynamiques

Monique à dit:
Re,

Avec Decaler() et sans Indirect()
Sans la plage "SsCat"

Il y a peu de plages nommées, on décale toujours la même,
plus ou moins vers la droite.

La formule Decaler() est expliquée dans le fichier (j'espère)
Salut à tous
Salut Monique
Je sais déjà faire ça : tu utilises la fonction DECALER en direct pour redéfinir la plage de la liste, sans tenir compte des listes nommées.
Mais je suis persuadé qu'il existe une astuce pour mettre le nom de la liste en variable, donc, je cherche.
Je peux le faire par macro avec une redéfinition de la formule de validation, mais ce que je voudrais réellement, c'est rester dans le domaine des formules.
A+
 
Re : Fonction indirect et listes dynamiques

Bonjour,

Avec Indirect() dans Decaler() pour la formule de la liste de validation,
les plages nommées de façon "large" et non de façon dynamique
=DECALER(INDIRECT(B2);;;NBVAL(INDIRECT(B2)))

Pour la sous-catégorie,
si le nom est le même que celui de la catégorie avec &"Sc" au bout :
=DECALER(INDIRECT(B2&"Sc");;;NBVAL(INDIRECT(B2&"Sc")))

sinon (si le nom de la sous-catégorie est quelquonque) :
=DECALER(INDIRECT(INDEX(SsCat;EQUIV(B14;Catégorie;0)));;;NBVAL(INDIRECT(INDEX(SsCat;EQUIV(B14;Catégorie;0)))))

Mais ce système suppose de nommer toutes les plages
et non plus seulement la 1ère colonne à gauche et la 1ère ligne en haut.
(la formule de mon message de 16:25 hier, avec Indirect() en plus)
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
455
Réponses
3
Affichages
402
Réponses
10
Affichages
380
Retour