XL 2013 Recherche multicritère dans base de donnée.

Corentin.PL

XLDnaute Nouveau
Bonjour à tous,
J'aurais besoin d'un coup de main 'il vous plait.

J'aimerais effectuer une recherche qui identifie pour chacun de mes produits le carton idéal pour l'emballer.
Pour cela j'ai créé une "BDD" de cartons et une pour les produits.
Chacune des bases comporte la plus grande valeur dans la premiere colonne, la seconde dans la 2ème, la tierce dans la 3ème (ca me semblait plus facile).

J'aimerais donc que ma formule cherche, en fonction des dimensions des produits, le carton ayant les dimensions strictement supérieur la plus proche pour chacune des dimensions.

Ce sera plus clair je pense avec la PJ.

Merci d'avance :)
 

Pièces jointes

  • CHAises_etd_dim_exceldownload.xlsx
    12.5 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour
Essayez peut-être la formule matricielle suivante en J3 à recopier vers le bas (formule matricielle -> à valider par la combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche Entrée)
VB:
=INDEX(CartonsBDD!D:D;PETITE.VALEUR(SI((G3<=CartonsBDD!$A$3:$A$17)*(H3<=CartonsBDD!$B$3:$B$17)*(I3<=CartonsBDD!$C$3:$C$17);LIGNE(CartonsBDD!$D$3:$D$17));1))

nota: on peut remplacer la comparaison <= par < si nécessaire.
 

Pièces jointes

  • Corentin.PL- CHAises_etd_dim- v1.xlsx
    14.1 KB · Affichages: 10

Corentin.PL

XLDnaute Nouveau
Wow ! Super, merci ça marche niquel !
Juste pour être sur que j'arrive à "lire" la formule: tu fais bien la recherche en partant du plus petit vers le plus grand pour la sélection, c'est ça ?
Encore une fois je te remercie de ta rapidité, c'est vraiment cool !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
tu fais bien la recherche en partant du plus petit vers le plus grand pour la sélection, c'est ça ?
Encore une fois je te remercie de ta rapidité

Pour chaque ligne du tableau CartonsBDD, on regarde si la première valeur (long_int) est supérieure à la valeur USED_ gdeval_1 ET si la seconde valeur (larg_int) est supérieure à la USED_ gdeval_2 ET si la troisième valeur (haut_int) est supérieure à la USED_ gdeval_3. Si c'est trois conditions sont vérifiées, alors on renvoie le numéro de la ligne de correspondant sinon on renvoie Faux (ce dernier point est implicite)
On a donc tous les numéros de ligne dont les carton pourraient convenir. On choisit le plus petit numéro de ligne (Petite.Valeur(... ; 1)
et avec la fonction Index on affiche le carton.

Implicitement, on se base donc sur l'ordre du tableau CartonsBDD, en en prenant le plus petit numéro des lignes qui conviennent.
 

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour @Corentin.PL, @mapomme,

Dans le fichier joint, puisque xl2013 avec la fonction AGREGAT et après avoir transformé le tableau des côtes en tableau structuré, formule:=INDEX(T_Cartons[ref];AGREGAT(15;6;(LIGNE(T_Cartons[ref])-LIGNE(T_Cartons[#En-têtes]))/(G3<=T_Cartons[long_int])/(H3<=T_Cartons[larg_int])/(I3<=T_Cartons[haut_int]);1))

Cordialement
 

Pièces jointes

  • Chaises et cartons.xlsx
    15.1 KB · Affichages: 22

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

La fonction AGREGAT permet d'appliquer certaines fonctions matricielles en évitant les erreurs (éventuellement les cellules masquées ou cachées) sans avoir à la valider par CTRL+MAJ+ENTREE et elle a été écrite de façon à être moins coûteuse en temps de calcul sur de grand tableaux.

A part ça c'était juste pour démonstration qu'avec xl2013 il existe d'autres manières de faire, la meilleure pour vous étant celle que vous choisirez.

Quant au tableaux Structurés, il est temps que nous nous y mettions. Tutoriel Tableaux Structurés

Cordialement
 
Dernière édition:

Corentin.PL

XLDnaute Nouveau
Super, je vais Reblosser les tableaux alors, j'y cours ! Merci encore j'ai pu utiliser vos formules et déterminer 2 références de cartons me permettant d'emballer 94.5% de mes chaises sans gaspiller d'emballage ! Une petite formule pour Corentin, un grand impact pour la nature ;)
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 396
Membres
102 882
dernier inscrit
Sultan94