XL 2016 Récupérer liste de valeur comprise entre 2 bornes

loulourav

XLDnaute Occasionnel
Bonjour à tous,

Je cherche la solution à mon problème depuis plusieurs heures en vain ...
j'ai une base de donnée avec des noms et des tarifs.
j'ai une cellule (F4 sur fichier joint) sur laquelle je choisit un nom et j'obtiens son tarif (jusqu'ici pas de problème)
j'aimerai qu'ensuite, automatiquement, une liste de nom apparaissent selon que leur tarif est équivalent à + ou - 5%, cette liste peut être limitée à 20 noms ou pas ...
si possible de ne pas passer par macro ... ???

merci d'avance !
 

Pièces jointes

  • Liste entre borne.xlsx
    30.7 KB · Affichages: 12

loulourav

XLDnaute Occasionnel
Bonsoir JHA, le forum,

Merci beaucoup cela semble fonctionner parfaitement ! je testerai demain sur le fichier complet !

Juste quelques précisions, j'aime bien comprendre ^^ :
1°) A quoi sert la fonction Décaler dans les Noms ? Est ce que un Format Tableau revient à la même chose ?
est ce possible de m'expliquer la formule "pas à pas" ?
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)
2°) idem pour la formule du tableau de résultat :
=SIERREUR(INDEX(Nom;PETITE.VALEUR(SI((Prix>=$G$6)*(Prix<=$G$7);LIGNE(Prix)-1);LIGNE(1:1)));"")
que permet de faire les fonctions Ligne à la fin de la formule => ;LIGNE(Prix)-1);LIGNE(1:1)));"")

merci beaucoup en tout cas !!
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

1) Oui, le mode tableau te permettra d'avoir tes plages dynamiques également, autrement pour les plages nommées avec la fonction décaler c'est pour avoir des plages dynamiques, c'est à dire que si tu ajoutes des données, elles sont prises en compte sans changer les références des plages.
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)
On démarre en "A2" puis on compte le nombre de données en colonne "A" et on enlève le titre (-1).
PETITE.VALEUR(SI((Prix>=$G$6)*(Prix<=$G$7);LIGNE(Prix)-1);LIGNE(1:1))
on recherche les prix qui sont entre les bornes (Prix>=$G$6)*(Prix<=$G$7) puis on recherche les lignes de ces recherches "LIGNE(Prix)-1" le moins 1 car les données démarre en ligne 2.
LIGNE(1:1) cette fonction te retourne 1, quand tu copies vers le bas tu auras LIGNE(2:2) soit 2, cela te permet de ne pas modifier la formule pour avoir la seconde valeur puis la troisième valeur, etc..

JHA
 

loulourav

XLDnaute Occasionnel
Bonjour à tous,
merci JHA pour toutes ces explication très précises qui me permette de mieux comprendre ces formules !

en revanche, sur mon fichier complet le tableau de recherche ne commence pas en A1 comme celui de l'exemple, mais en A4, et de ce fait la formule ne retourne pas les résultats attendus ... j'ai beau essayer de modifier le LIGNE(Prix)-1);LIGNE(1:1)) en LIGNE(Prix)-5);LIGNE(1:1)) ou en LIGNE(Prix)-1);LIGNE(4:4)) rien à faire je n'y arrive pas ...y a un truc ou je suis pô doué ?

merci ++
 
Dernière édition:

JHA

XLDnaute Barbatruc
Bonjour à tous,

Si tes données commencent en "A4" mettre ligne(prix)-3, dans ton fichier exemple, les données commencent en "A2" et on avait ligne(prix)-1.

Attention, c'est une formule matricielle donc au lieu de faire "Entrée", il faut valider avec Ctrl+Maj+Entrée en même temps. Suite à cette validation, des accolades vont se mettre de chaque côté de la formule.
Sur la première formule il faut ligne(1:1),tu valides avec les 3 touches puis tu copies vers le bas.

JHA
 

Discussions similaires

Réponses
6
Affichages
513

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou