XL pour MAC Recherche dans une base de donnée avec conditions

vall

XLDnaute Nouveau
Bonjour à tous,

Voilà je suis en train de traiter une base de donnée d'environ 150 lignes et je souhaite trouver une fonction qui simplifie celle que j'ai mise en place actuellement !

Pour résumer mon problème : Je cherche le prix d'un objet avec une spécificité en fonction de la quantité voulu par un client. (Les prix fixés sont par palier)
J'ai donc créer une liste pour tout les objets ainsi que des listes associé à chaque objet et sa spécificité.

Pour le moment la solution que j'ai trouvé est la suivante :
Utiliser la fonction "RECHERCHEV" associé à la fonction "SI.CONDITION" et la fonction "ET"
En effet cette association plutôt longue me permet de retrouver le prix par palier en fonction de l'objet et sa spécificité que j'aurai choisi par liste.

Pour résumer l'actuelle solution j'ai recréer une petite base de donnée.

Merci à ceux qui trouveront une fonction alternative plus simple !
 

Pièces jointes

  • Recherche palier Base donnée.xlsx
    10.9 KB · Affichages: 17

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Vall et bienvenu sur XLD,
Un essai en PJ, à vérifier, avec :
VB:
=INDEX($E$3:$E$23;EQUIV(1;($B$3:$B$23=J3)*($C$3:$C$23=K3)*($D$3:$D$23>=L3);0)-1)
Formule matricielle, à valider par MAJ+CTRL+Entrée
et le total avec :
Code:
=SOMMEPROD(L3:L5;M3:M5)
 

Pièces jointes

  • Recherche palier Base donnée.xlsx
    10.4 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Just for the fun ...
En PJ un essai avec une fonction.
La syntaxe est :
VB:
=Prix(Objet, Spec, Qté)
Code:
Function Prix(Objet, Spec, Qté)
    Prix = ""
    DerLig = Range("B65500").End(xlUp).Row
    tablo = Range("B3:E" & DerLig)
    For L = 1 To UBound(tablo)
        If tablo(L, 1) = Objet And tablo(L, 2) = Spec Then
            If tablo(L, 3) >= Qté Then
                Prix = tablo(L - 1, 4)
                Exit Function
            End If
        End If
    Next L
End Function
A voir si plus rapide ou moins sur une grande BD.
 

Pièces jointes

  • Recherche palier Base donnée (2).xlsm
    16.3 KB · Affichages: 5

vall

XLDnaute Nouveau
Sur ma base de donnée la fonction matricielle ne pose aucun problème donc parfait !

D'ailleurs je me posais une petite question, est ce qu'il serait possible de rajouter une colonne Spec supplémentaire ?
Ce qui impliquerai dans la cellule prix d'inclure l'addition de la seconde spec à la première lorsque l'on en met une seconde !
 

vall

XLDnaute Nouveau
Ah si le seul problème que je viens de voir c'est si tu dépense le compteur.
Par exemple en prenant une quantité de 101 la fonction ne réagit pas alors que le palier est dépassé et il devrait prendre celui de 100 qui est le dernier
 

vall

XLDnaute Nouveau
Ah yes c'est sûrement la solution !

J'essaie de suivre ta logique dans les fonctions et j'essaie de rajouter une seconde colonne avec Objet et Spec différente de la première
Mais ça ne fonctionne pas en ajoutant simplement une addition


VB:
=INDEX(BD_prix;EQUIV(1;(BD_impression=I7)*(BD_spec=J7)*(BD_quantité>=H7);0)-1)+INDEX(BD_prix;EQUIV(1;(BD_impression=K7)*(BD_spec=L7)*(BD_quantité>=H7);0)-1)

Évidement la somme est sur une dernière colonne
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16