Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Liste de validation : gestionnaire de noms avec la fonction UNIQUE()

dionys0s

XLDnaute Impliqué
Bonjour le forum,

J'ai un tableau de données et un tableau de choix. Dans le tableau de choix, je dois sélectionner une colonne du tableau de données, et ensuite sélectionner une valeur de la colonne demandée. Je cherche donc à obtenir la liste de validation des valeurs uniques en fonction de la colonne demandée.

j'essaye de me servir des fonctions dynamiques (FILTRER, UNIQUE et TRIER) pour créer une liste de validation en cascade, et je suis surpris de ne pas arriver à faire fonctionner la liste de validation, puisque les formules fonctionnent exactement comme attendu dans la feuille de calcul, mais une fois la formule finale passée en paramètre dans la liste de validation, la liste déroulante n'affiche rien.

Je sollicite votre aide pour savoir si je m'y prends mal, si oui, à quel endroit, et si non, comment contourner le problème.

D'avance, merci pour votre aide ^^
 

Pièces jointes

  • Liste validation valeurs uniques.xlsx
    15.7 KB · Affichages: 15

chris

XLDnaute Barbatruc
Bonjour
La validation de données ne peut contenir une formule matricielle, ce que sont TRIER, UNIQUE et FILTRE...

On est donc obligé de placer la formule sur un onglet puis de la nommer par une formule du type :
VB:
=DECALER(Choix!$H$5;;;NBVAL(Choix!$H$5:$H$29))
 

Ashil

XLDnaute Nouveau
Bonjour,
Ci-joint une proposition de solution qui marche très bien.
J'ai récemment fait un tuto sur le sujet sur ma page Youtube que je vous propose de regarder.
N'hésitez pas à vous abonner
Cdlt,
Ashil
 

Pièces jointes

  • Liste validation valeurs uniques.xlsx
    16.1 KB · Affichages: 9

Ashil

XLDnaute Nouveau
RE


Tu compliques inutilement

1 formule pour une liste sans valeur 0
+ 1 formule nommée
suffisent pour la validation
Re,
Pour faire au plus simple, la 3ème formule peut être intégrée à la formule nommée en écrivant :
=DECALER(Données!$I:$I;0;0;(NBVAL(Données!$I:$I)-NB.SI(Données!$I:$I;0)))
Ce qui permet de filtrer le zéro sans passer par INDIRECT qui a mon sens est lourd en écriture dans la formule du FILTRE.

Cdlt,
Ashil
 

Pièces jointes

  • Liste validation valeurs uniques.xlsx
    15.7 KB · Affichages: 4
Dernière édition:

Efgé

XLDnaute Barbatruc
Bonjour à toutes et tous

En plus court

Le # déverse la plage de la formule UNIQUE

Cordialement
 

Pièces jointes

  • dionys0s.xlsx
    13.6 KB · Affichages: 11
Dernière édition:

dionys0s

XLDnaute Impliqué
Merci pour vos réponses. Malheureusement, je crains de devoir faire une croix sur mon besoin si je veux me passer de VBA pour y répondre, puisque :
  • Les colonnes de données sont variables (de 1 à n)
  • Les lignes de choix sont variables (de 0 à n)
Je ne peux donc pas utiliser de plage de formule intermédiaire. J'ai essayé en utilisant la fonction FILTRE() sur la plage entière pour filtrer les deux dimensions, mais dans ce cas, la fonction UNIQUE s'applique sur les combinaisons de valeurs de toutes les colonnes filtrées, et non sur chaque colonne distincte. Tant pis.

Sans VBA, et avec une seule plage de calculs intermédiaires, j'ai l'impression que ce n'est pas faisable (cf. exemple joint).

Encore merci pour votre aide en tout cas.

Bonne journée ^^
 

Pièces jointes

  • Liste validation valeurs uniques.xlsx
    15 KB · Affichages: 9
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

Aucun de nous n'a proposé de VBA tout en fournissant une solution fonctionnelle.

A partir du moment où on part d'un tableau structuré, le nombre de colonnes ou de lignes importe peu...

La plage intermédiaire qui liste les valeurs est nécessaire comme toute source de liste déroulante, même avec VBA, sauf à alimenter un objet de type LISTBOX...

Ici elle est bien dynamique sans besoin de coder
 
Dernière édition:

dionys0s

XLDnaute Impliqué
Bonjour,

toutefois chris, l'exemple que tu fournis message 4 cette de fonctionner dès que je rajoute une ligne de choix (choix de colonne + valeur associée). Je précisais bien dans mon message 7 que les lignes de choix sont variables.



Pour le faire fonctionner, on a besoin d'autant de plages intermédiaires que de lignes, ce que je ne peux pas savoir à l'avance, et donc j'ai besoin de VBA à cause de cette contrainte, ce dont je souhaitais me passer.
 

Efgé

XLDnaute Barbatruc
Bonjour à toutes et tous

Avec ce que j'ai compris il faut une liste par cellule comportant la liste de validation
VB:
=LET(MonTab;INDEX(lsoDonnées;;EQUIV(H6;lsoDonnées[#En-têtes];0));TRIER(UNIQUE(FILTRE(MonTab;MonTab<>"";""))))


Cordialement
 

Pièces jointes

  • Liste validation valeurs uniques (2).xlsx
    16.6 KB · Affichages: 8

Discussions similaires

Réponses
13
Affichages
356
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…