Recherche comprise entre deux valeurs

Bonjour,

Je viens vers vous car cela fait deux jours que je tourne en rond sur google sans trouver de solution.

J'ai un tableau excel comme suit (exemple) sur une feuille (Table_Art):

Résistance Thermique | Libellé | Matière | Dimension | Épaisseur

3,7 | BIOFIB TRIO | CHA | 1250*600 | 145

4 | ROCKFACADE | LDR | 135*600 | 140

5.25 | PAVATHERME | FDB | 600*1100 | 200

Sur une seconde feuille, deux cellule (B14 et B18) pour Résistance thermique Min et Max.

Je recherche à sortir tous les libellés de la Table_Art compris entre mon R min et R Max. J'ai essayer des formule matriciel glané sur le net sans résultat (j'ai bien sur modifié les formule trouvé afin de collé avec mes tables crées sur mon classeur) et aussi des couples INDEX+EQUIV mais sans succès.

Avez vous une idée pour réaliser ceci avec une formule ? (Je ne souhaite pas utiliser de vba)

Merci d'avance.

Nicola5

Bonjour,

Si tu le fais avec formule, c'est une formule matricielle utilisant INDEX et PETITE.VALEUR pour déterminer le numéro de ligne...

Fichier ?

Merci pour votre retour.

Il me semble avoir essayer aussi avec le couple INDEX+PETITE.VALEUR, mais j'ai pas du bien faire cela

J'ai laisser dans mon fichier excel tous mes tests foireux.

Pour 2 premiers critères :

=SIERREUR(INDEX(Base_Panneau!D:D;PETITE.VALEUR(SI(Base_Panneau!A:A>=$B$14;SI(Base_Panneau!A:A<=$B$18;LIGNE(Base_Panneau!A:A);""));LIGNE(1:1)));"")

Le type de données du 3e ne correspond pas : à ajuster avant de poursuivre....

Merci beaucoup, ça à l'air de faire le taff.

Est ce que je pourrais avoir quelque explication ? J'aime bien comprendre ce que je fais

Quand on indique "Base_Panneau!A:A" cela veut il dire toute la colonne A de la feuille Base_Panneau ?

Je ne comprend pas l'utilisation de "LIGNE(1:1)" qui à l'air de sélectionner la première ligne de la feuille ou l'on pose la formule, pouvez m'éclairer la dessus ?

J'ai d'abord essayé de sélectionner plusieurs cellule et de coller la formule (avec Ctrl+Maj+Entrée) mais j'avais la même information sur toute les cellules, j'ai donc mis ma formule sur une cellule (toujours avec le Ctrl+Maj+Entrée) puis étiré sur les cellule du dessous, la j'ai bien mes différents articles en fonction de B14 et B18, et je constate que "LIGNE(1:1)" s'incrémente : "LIGNE(2:2) LIGNE(3:3) ..."

Qu'entendez vous par "Le type de données du 3e ne correspond pas", c'est une valeur numérique. Est ce que c'est sur le format de cellule que j'ai mal choisis ?

Merci encore !

Justement non ! L'épaisseur dans la base n'est pas une valeur numérique, il faut donc régler cette question.

J'ai effectivement formulé sur la colonne entière pour aller vite (je devais m'absenter), mais ce n'est pas spécialement recommandé si on peut l'éviter... Il conviendra de nommer des plages en dynamique (si la base est extensible), cela permettra d'éviter aussi l'allongement des formules...

bonjour ; M ferrand

je met mon doigt dans l'engrenage.....

pour bien saisir la manoeuvre ;tu dois te penetrer de l'idée que LIGNE (....) n'a rien a voir avec une quelquonque reference qui pourrait se trouver dans le tableau

LIGNE renvoie un n° de ligne ; c'est un nombre que l'on peut rendre variable au fil de l'incrementation de la formule

dans le cas present ; il sert à renseigner le rang (K) de la fonction PETITE.VALEUR donc

si dans la plage il y a une ou plusieurs valeurs qui correspondent au critere; alors donner le n° de ligne ; bien sur il y en a plusieurs... qu'il faut trier ; c'est la qu'intervient PETITE.VALEUR ( des n° de ligne de rang 1 et au fil de l'incrementation : de rang 2, de rang 3......

1) tu saisis la formule sur la 1ere cellule

2) tu la valides (matricielle)

3) tu incrementes sur la plage desirée

bien respecter cet ordre ; sinon......bug (matrice invariable)

cordialement

Salut Tulipe !

Tu as tout à fait raison d'apporter ces précisions... ! Il me semblait qu'il avait compris en constatant que LIGNE(... s'incrémentait, mais cela restait effectivement pas garanti (compte-tenu de sa méthode antérieure à introduire une formule matricielle sur plusieurs lignes...)

Il reste que l'intéressé doit décider comment l'on doit traiter les épaisseurs qui sont des valeurs texte dans la colonne correspondante...

Bon weekend.

re

maintenant qu'il sait comment fonctionne la bicyclette ; je pense qu'il doit se lancer dans l'ascension du col

cordialement

Bonjour,

Merci à vous pour ces informations, je comprend mieux le fonctionnement de LIGNE et de l'incrémentation qui va avec, au top !

Effectivement j'ai commencé l'ascension J'en suis arrivé ici :

=SIERREUR(INDEX(T_ART_PAN_LIB;PETITE.VALEUR(SI(T_ART_PAN_RTH>=Table_Panneau!$B$15;SI(T_ART_PAN_RTH<=Table_Panneau!$B$19;SI(T_ART_PAN_MAT=Table_Panneau!$D$15;SI(T_ART_PAN_KRA=Table_Panneau!$D$23;SI(T_ART_PAN_EPA<=Table_Panneau!$B$23;LIGNE(T_ART_PAN_RTH);"")))));LIGNE(1:1)));"")

J'ai modifié mes épaisseurs, normalement je suis en valeurs numérique maintenant. J'ai aussi nommé mes plages pour plus de faciliter, et du coup les requêtes sont quasi immédiate, la ou je mettais 30s avec les colonnes entières (type A:A).

Cela fonctionne pas mal du tout, mais (sinon c'est pas drôle), je n'arrive pas à ressortir la valeur max en épaisseur, il me ressort bien tous ce qu'il y a au dessous, mais me ressort aussi jusqu'à 40mm au dessus. Je ne comprend pas trop, j'ai essayer de suivre la logique de la formule donné Vendredi, mais j'ai peut être fait un loupé :/

Avez vous une idée de ce qui m’échappe ?

En faite après plusieurs vérif, je suis pas bon du tout, je n'ai pas les articles retournés avec la sélection "Kraft", un coup j'ai du avec, un coup j'ai du sans. J'ai du bien me foiré quelque part.

Je suis redescendu un peu et j'ai pondu ça :

=SIERREUR(INDEX(T_ART_PAN_LIB;PETITE.VALEUR(SI(T_ART_PAN_RTH>=Table_Panneau!$B$15;SI(T_ART_PAN_RTH<=Table_Panneau!$B$19;SI(T_ART_PAN_MAT=Table_Panneau!$D$15;LIGNE(T_ART_PAN_RTH);"")));LIGNE(1:1)));"")

Mais même comme cela, suivant les valeurs de R, il me rajoute une autre matière que celle sélectionné ... Je crois que je suis pas vraiment sur le bon chemin. Faut il mettre mes autres conditions SI en dehors de PETITE.VALEUR ?

Je vais aller voir un peu l'aide de la fonction PETITE.VALEUR entre midi et deux, je ne dois pas l'utiliser correctement

Bonjour,

Je n'ai pas le temps de regarder maintenant, mais PETITE.VALEUR sert à renvoyer un numéro de ligne qu'on va appliquer au vecteur de recherche dans INDEX. Ce vecteur doit donc partir de la ligne 1 pour que les numéros de lignes correspondent aux valeurs cherchées...

En conséquence, tes noms de plage ne sont pas adéquats pour opérer une recherche de cette façon...

Merci pour le retour,

J'ai modifié ma feuille Base_Panneau et mes plages pour que tous commence dès la ligne 1. J'ai essayé avec des plages dynamique mais je me suis cassé les dents :/

Alors maintenant, ça a l'air de fonctionner, avec la formule suivante :

=SIERREUR(INDEX(T_ART_PAN_LIB;PETITE.VALEUR(SI(T_ART_PAN_RTH>=Table_Panneau!$B$15;SI(T_ART_PAN_RTH<=Table_Panneau!$B$19;SI(T_ART_PAN_MAT=Table_Panneau!$D$15;SI(T_ART_PAN_KRA=Table_Panneau!$D$23;SI(T_ART_PAN_EPA<=Table_Panneau!$B$23;LIGNE(T_ART_PAN_RTH);"")))));LIGNE(1:1)));"")

Je pense que mon problème est résolu. Pouvez vous me confirmer si ma méthode est la bonne ?

Merci encore pour votre aide !

Rechercher des sujets similaires à "recherche comprise entre deux valeurs"