XL 2013 Fonction INDEX EQUIV pour calculer coût transport

Koracen

XLDnaute Nouveau
Salut à tous,

Je souhaiterais calculer automatiquement le coût de transport en fonction des dimensions de mon colis.

Je rentre donc les données en H7 I7 J7 et K7 et je souhaite obtenir le résultat en K10

Le souci c'est que lorsque je tape par exemple un poids à 4000g comme dans le fichier que j'ai joint, il va me chercher la valeur F32 au lieu de F15 alors que mes dimensions passent dans cet valeur (sur certaines valeurs il va y avoir 3 ou 4 prix qui vont être dans les dimensions et je voudrais que le moins cher apparaisse)

Y à t-il une solution pour qu'il me mettent la valeur la moins cher.

Merci à vous
 

Pièces jointes

  • transport.xlsx
    13.1 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Koracen, et bienvenu sur XLD,
Un essai en PJ avec une macro VBA :
VB:
Sub CherchePrixMin()
    Dim DL%, L%, Lar, Lon, Epai, Poi, Prix, Ligne%
    Application.ScreenUpdating = False
    DL = Range("B65500").End(xlUp).Row
    Lar = [H7]: Lon = [I7]: Epai = [J7]: Poi = [K7]
    Prix = 32000
    For L = 2 To DL
        If Cells(L, "B") >= Lar And Cells(L, "C") >= Lon And Cells(L, "D") >= Epai And Cells(L, "E") >= Poi Then
            If Cells(L, "F") <= Prix Then
                Prix = Cells(L, "F")
                Ligne = L
            End If
        End If
    Next L
    [K10] = Prix: [K11] = Ligne
End Sub
 

Pièces jointes

  • transport.xlsm
    36.2 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Ce comportement est normal car avec Equiv(....;....;1) il faut que les données soient triées en ordre ascendant, ce qui n'est pas le cas pour la colonne des Poids.

J'ai donc, dans votre formule remplacer la dernière fonction Equiv par :
=AGREGAT(15;6;LIGNE($2:$47)-1/($E$2:$E$47>=$K$7);1)
retournera l"index d'ordre de la plus petite valeur >= k7.

On aurait pur faire un min(Si(......)) ou un Petite.Valeur(Si(.....);1) en matricielles mais la fonction agregat permet de faire la même chose, sans validation matricielle et plus rapidement.

Cordialement
 

Pièces jointes

  • transport.xlsx
    19.5 KB · Affichages: 6

Koracen

XLDnaute Nouveau
Merci pour vos 2 retour qui me permettent d'avancer un petit peu dans mes recherches.

La macro fonctionne très bien et me permet de trouver mon prix en 1 clic.

Pour la fonction Agregat par contre il y a certaines valeurs qui ne renvois pas dans le bon prix. (EX: Longueur 60 Largeur 50 Epaisseur 50 Poids 2000 renvois le prix en F28 au lieu de F30)

Je continue mes recherches de mon côté également mais n'étant pas un expert en excel je bute sur cette fonction.

Encore Merci
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici une autre proposition par Agregat qui retourne la première ligne (-1 pour entête) pour laquelle les mesures et poids sont >= aux valeurs données.
AGREGAT(15;6;LIGNE($2:$47)-1/(B2:B47>=$H$7)/(C2:C47>=$I$7)/(D2: D47>=$J$7)/($E$2:$E$47>=$K$7);1)
J'ai mis une mise en forme conditionnelle.

A cause des poids (les emballages ne sont pas forcément les plus petits :) )


cordialement
 

Pièces jointes

  • transport v2.xlsx
    19.7 KB · Affichages: 14
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45