Sommeprod avec min dans excel

Fermé
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009 - 21 janv. 2009 à 20:22
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009 - 26 janv. 2009 à 19:14
Bonjour,

J'aimerais trouver le prix le plus petit dans une plage selon un critère.

Voici ma formule:

=SOMMEPROD(MIN((Produits=A7)*(Prix)))

Et le résultat me donne 0.

j'ai même essayé comme ceci et même résultat.

=SOMMEPROD((Produits=A7)*MIN(Prix))

Si je fais la première formule mais avec MAX cela fonctionne très bien mais pas avec MIN. Pourquoi??

J'ai essayé aussi de faire MIN(SI(...)) cela fonctionne mais en matricielle et comme je dois copier la formule sur plus de 460 lignes c'est long à calculer. Je ne veux donc pas le faire en matricielle.

Avez-vous des idées??

Merci
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
22 janv. 2009 à 22:39
bonjour

Si ta colonne A est triée, tu peux utiliser la formule suivante avec le code cherché en I1 (à adapter) :

=MIN(DECALER($A$1;EQUIV(I1;$A:$A;0)-1;5;SOMME(NB.SI($A:$A;I1));1))

La formule recherche le code en colonne A,
délimite la plage des codes identiques
puis recherche le prix minimum de la plage en colonne F
1
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009
23 janv. 2009 à 17:14
Bonjour,

Ta solution est presque bonne sauf que mes données ne sont pas trié selon le produits.

Donc cela ne fonctionne pas.

Si tu as une autre solution, dis-le moi!!

Merci!!

lily20
0
brochamin Messages postés 88 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 22 février 2014 24
21 janv. 2009 à 22:28
Bonsoir,

Je ne suis pas sûr que la fonction sommeprod soit utile (à moins que je n'ai pas bien compris votre problème). Je vous propose plutôt une formule du type
=MIN(C7:C16)*RECHERCHEV(MIN(C7:C16);$C$7:$D$16;2;FAUX)

Colonne C contient les données dont on veut le mini et la colonne D contient le prix à multiplier par le mini.

Benj
0
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009
22 janv. 2009 à 21:14
Bonjour brochamin,

Je dois faire ma recherche sur la colonne A (qui est le Produit) et trouver le minimum de la colonne F (qui est le Prix) pour le produit à rechercher. Donc si j'ai deux Produit pareil il doit me trouver celui dont de prix est le plus petit.

A B C D E F G
Produits Fournisseur Projet Facture date Prix Coût
HSS6X6X1/4 LEROUX 24-41 94168269 5/janv/08 66.95 $ 1 222.45 $
HSS6X6X1/4 LEROUX 24-41 94168269 6/janv/08 68.95 $ 3 820.17 $
HSS6X6X5/16 LEROUX 24-41 94168269 6/janv/08 66.95 $ 3 001.50 $
HSS5X5X1/2 LEROUX 24-41 94168269 6/janv/08 68.95 $ 1 176.15 $
HSS7X7X5/16 LEROUX 24-41 94168269 7/janv/08 66.95 $ 887.92 $
HSS7X7X1/2 LEROUX 24-41 94168269 7/janv/08 67.95 $ 3 428.76 $
HSS4X4X1/4 LEROUX 24-41 94168269 7/janv/08 66.95 $ 392.38 $
W14X30 PACIFIQUE 24-41 IV-093683 8/janv/08 40.95 $ 614.25 $
W18X35 PACIFIQUE 24-41 IV-093683 8/janv/08 38.50 $ 1 212.75 $
W18X35 PACIFIQUE 24-41 IV-093683 9/janv/08 35.50 $ 1 347.50 $
W12X14 PACIFIQUE 24-41 IV-093683 9/janv/08 42.95 $ 360.78 $
W12X14 PACIFIQUE 24-41 IV-093683 10/janv/08 45.95 $ 300.65 $

Pour le produit W18X35 je veux qu'il me donne le prix 35,50$.

Merci!!
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
21 janv. 2009 à 22:50
Salut,

Si en colonne A tu as les critères à rechercher et les valeur en colonne B

colles cette formule dans une cellule et déclares la en matricelle en surbrillant ta formules dans la barre des formules, Ctrl+shift+Entrée
si tu fais correctement ta formule ressemblera à mon modèle ensuite tu peux l'incrémenter ou la copier sans avoir à la modifier

{=MIN(SI(($A$1:$A$26="prix");$B$1:$B$26))}

A+
0
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009
22 janv. 2009 à 21:07
Bonjour Mike-31,

Ta solution fonctionne très bien mais je veux pas être obligé de faire une formule matricielle. J'ai beaucoup trop de données et c'est long à exécuter.

Si tu as une autre solution, dis-le moi...

Merci
lily20
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
23 janv. 2009 à 19:13
bonjour

à vrai dire je m'en doutais un peu mais je ne vois pas de solution avec les formules et donc je te propose une formule personnalisée à copier dans un module (mode d'emploi éventuel)
Public Function mini_val(cherche As String, plage As Range, colonne As Integer)
Dim sel As Range, l As Long
    Application.Volatile
    mini_val = "": l = 1
    Do
        Set sel = plage.Find(What:=cherche, _
                        After:=plage.Cells(l, 1), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If sel Is Nothing Then Exit Function
        If sel.Row <= l Then Exit Function
        l = sel.Row
        If mini_val > sel.Offset(0, colonne).Value _
            Or mini_val = "" Then
                mini_val = sel.Offset(0, colonne).Value
        End If
    Loop
End Function

Pour appeler la fonction cela fonctionne exactement comme une formule normale et tu peux mettre :
=mini_val(I1;DECALER($A$1;;;NBVAL($A:$A);1);5)

La fonction recherche toutes les valeurs égales au critère de recherche en I1 dans les cellules renseignées de la colonne A et restitue la valeur minimum de la colonne F (décalage de 5).

La fonction permet aussi de retrouver le minimum sur une colonne antérieure :
par exemple, si l'on fait la recherche en colonne D, avec -3 on obtiens la valeur minimum de la colonne A pour le critère cherché.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lily20 Messages postés 5 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 janvier 2009
26 janv. 2009 à 19:14
Merci gbinforme je vais essayer ça.
0