Recherche avec plusieurs critères

Bonjour

Je souhaite faire une recherche avec plusieurs critères

Débit+Nature tube+Vitesse autorisé= Diamètre de tube appropriés

Je vous joint mon fichier pour mieux comprendre

https://www.excel-pratique.com/~files/doc/mYrWbtest.xls

Merci pour vos réponses

Salut Excelnovice,

Sur la base d'une formule matricielle (à valider par CTRL + MAJ + ENTREE) :

en J15 :

=SI(I14=$B$3;INDEX($E$4:$E$26;EQUIV(I13&I15;A4:A26&ARRONDI(B4:B26;2);0));INDEX($E$4:$E$26;EQUIV(I13&I15;A4:A26&ARRONDI(C4:C26;2);0)))

Une fois validée matriciellement, des accolades doivent apparaître de chaque côté de la formule.

Je n'ai pas ajouté la gestion des cas n'existant pas, mais c'est envisageable.

@+

Bonjour,

Merci thibo pour ta réponse , j'aimerai comprendre la formule que tu a ecrite tu aurais un site ou c''est expliqué, car si j'ai un autre cas j'aimerai pouvoir la modifier?

re,

Le principe repose sur la recherche à l'aide des fonctions INDEX et EQUIV

Généralement, on utilise ces fonctions lorsqu'on a un seul critère à rechercher dans une seule colonne (situation simple)

Dans le cas présent, on a plusieurs critères dans plusieurs colonnes. On passe donc de la recherche dans une seule colonne à une recherche dans plusieurs colonnes.

Il faut dans ce cas utiliser les formules matricielles du fait que la recherche se fait sur plusieurs colonnes en même temps.

Elles ne sont pas très simples à mettre en place et à utiliser. Je suis très loin d'en être un expert. C'est à force d'avoir vu (ici ou ailleurs) différentes utilisations qu'un jour on se lance, que petit à petit, on commence à comprendre.

Pour la comprendre, un début (ou tentative) d'explication :

Je recherche 2 critères. Je les concatène avec & et je fais la même chose avec les colonnes.

Précison : dans ton cas, j'ai du arrondir les valeurs des colonnes car il y avait pas mal de décimales.

Le principe : adopter, essayer de comprendre, essayer de refaire, s'acharner et un jour... tout devient plus clair (ou presque).

Voilou.

@+

Re bonsoir,

en fait thybo, çà ne marche que pour une seule valeur

je souhaitais en fait a chaque fois prendre la valeur superieur si le debit n'existait pas

re,

Il est toujours bon de donner toutes les contraintes dès le départ...

Bon, on reste toujours dans le domaine des matricielles avec un détour par la fonction DECALER :

en J15 :

=INDEX(DECALER(A3;EQUIV(I13;A4:A26;0);4;NB.SI(A4:A26;I13));SI(ESTNA(EQUIV(I15;ARRONDI(DECALER(A3;EQUIV(I13;A4:A26;0);EQUIV(I14;B3:C3;0);NB.SI(A4:A26;I13));2)));1;EQUIV(I15;ARRONDI(DECALER(A3;EQUIV(I13;A4:A26;0);EQUIV(I14;B3:C3;0);NB.SI(A4:A26;I13));2))+(ESTNA(EQUIV(I15;ARRONDI(DECALER(A3;EQUIV(I13;A4:A26;0);EQUIV(I14;B3:C3;0);NB.SI(A4:A26;I13));2);0)))))

toujours à valider par CTRL + MAJ + ENTREE

Un des soucis ici est que la fonction EQUIV (sans son dernier paramètre), retourne la valeur inférieure la plus proche, et non pas la supérieure. Il a donc fallu ruser un peu, mais cela joue sur la longueur de la formule.

Reste un truc à gérer : si on rentre une taille supérieure au maximum, ça retourne #REF!. C'est gérable, à toi de nous dire s'il faut le prévoir. Ca va simplement "un peu" rallonger la formule

J'ai fait quelques tests. A ton tour de tester et de nous dire.

Bonne soirée

@+

Bonsoir,

Bon après avoir lu ta "petite formule" je vais aller prendre un Efferalgan, mal au crane.

Merci çà marche bien. Par contre si je dois adapter pour un autre tableau je sens que je vais lutter, je vais déja essayer tout seul.

Bonsoir

Oui! Mais, comme, apparemment aucun débit n'est identique, tu peux faire une formule plus facile à comprendre en supprimant ton critère Choix du tube et passer à une formule plus simple comme:

=SI(ESTNA(INDEX($A$4:$E$26;EQUIV($I$15;SI($I$14="2.0 m/s";$C$4:$C$26;$B$4:$B$26);0);5));DECALER(INDEX($A$4:$E$26;EQUIV($I$15;SI($I$14="2.0 m/s";ENT($C$4:$C$26);ENT($B$4:$B$26));0);5);1;0;;))

sous forme matricielle à valider avec Ctrl+Maj+Entrée

qui te donnera soit l'équivalent, soit la valeur supérieure.

Cordialement,

Amadéus

Re bonsoir

Amadeus en fait si j'ai besoin de choisir mon type de tubes, çà dépends de l'application.

PAr contre j'ai essayé d'insérer un autre type de tube entre cuivre et acier et çà marche pas.

Y aurait'il une solution par macro ou autre qui me permette de rentrer facilement un nombre de tubes?

Salut le forum

Encore une matricielle à valider par [CTRL]+[SHIFT]+[ENTER]

{=INDEX(E1:E26;MAX(SI((I13=A1:A26)*(((SI(INDEX(B1:B26;EQUIV(I15;B1:B26;1);1)<I15;INDEX(B1:B26;EQUIV(I15;B1:B26;1)+1;1);INDEX(B1:B26;EQUIV(I15;B1:B26;1);1))=B1:B26)*(I14="1.5 m/s"))+((SI(INDEX(C1:C26;EQUIV(I15;C1:C26;1);1)<I15;INDEX(C1:C26;EQUIV(I15;C1:C26;1)+1;1);INDEX(C1:C26;EQUIV(I15;C1:C26;1);1))=C1:C26)*(I14="2.0 m/s")));LIGNE(E1:E26);0)))}

Mytå

Re bonsoir,

Vos formules marchent toutes.

Par contre pour les adapter car mon tableau va evoluer, je risque de pas y arriver je comptais le faire en plusieurs etapes voir le VBA

https://www.excel-pratique.com/~files/doc/pshaATEST.xls

avec ces 2 formules:

Function RechercheVsup(CoRésul As Range, Coentrée As Range, Réfé As Variant)

'CoRésult est une plage de la colonne ou va se trouver notre résultat

'Coentrée est une plage de la colonne ou on va comparer avec une référence pour trouver le résultat

'Réfé est une celulle qui sert de référence

With Application.WorksheetFunction

RechercheVsup = .Index(CoRésul, .Match(1, .Frequency(Réfé, Coentrée), 0), 1)

End With

End Function

Function RechTab(Tableau As Range, valX As Range, valY As Range, Réfé1 As Range, Réfé2 As Range) As Double

With Application.WorksheetFunction

RechTab = .Index(Tableau, .Match(Réfé2, valX, 0), .Match(Réfé1, valY, 0))

End With

End Function

Le hic c'est que çà me mets un message d'erreur car il aime pas du tout ma chaine de caractere type: Ø 12/14

Il me mets un message d'erreur.

Je pense passer par le vba car çà me parait plus simple à adapter, sauf je dois faire le travail en 2 tableaux mais au moins lorsque le format passera je pourrais adapter, car vos formules sont compliquées pour moi.

J'ai fais le test sur la feuile 1

Bonjour

C'est normal qu'il aime pas du tout ma chaine de caractere type: Ø 12/14

La function RechTab doit retourner une valeur de type double (numérique), ce que n'est pas la chaîne Ø 12/14, c'est du texte (string)

Change le type de retour de la function, et cela devrait fonctionner.

@+Jean-Marie

Re...

https://www.excel-pratique.com/~files/doc/VghwipshaATEST.xls

Dans le fichier, j'ai rajouté une ligne (en 4), pour la gestion d'erreur, quand la valeur (i16)est trop importante par rapport aux valeurs possibles suivant le type de tube, c'est la valeur "Débit trop fort" qui sera retournée. Il est important de fixer en B4 et C4 une valeur qui sera toujours plus forte que les véritables vitesses.

Dans la cellule J16, une formule qui permet de trouver le diamètre du tube, formule à valider par les touches Ctrl+Shift+Entrer.

=INDEX(E4:E41;EQUIV(1;FREQUENCE(I16;SI(A4:A41=I14;SI(I15=C3;C4:C41;B4:B41);1000));0))

@+Jean-Marie

Bonjour,

Je vois que tu as obtenu d'autres réponses.

Je joins ma dernière version

Le fichier est prévu pour avoir d'autres types de produits.

A toi de faire ton choix

https://www.excel-pratique.com/~files/doc/Excelnovice.xls

@+

Je vous remercie pour vos réponses

Rechercher des sujets similaires à "recherche criteres"