XL 2013 Fonction INDEX EQUIV pour calculer coût transport

  • Initiateur de la discussion Initiateur de la discussion Koracen
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour