Plus petite valeur

Bonjour,

J'ai un fichier (exemple joint) avec une référence en colonne A et des valeurs en colonnes B et C.
Une référence peut avoir plusieurs valeurs donc apparaitre sur plusieurs lignes.
Les valeurs peuvent être vide ou 0.

Comment obtenir la plus petite valeur (hors 0) des colonne B et C à la saisie d'une Référence ? En VBA svp.

18test1.xlsx (10.51 Ko)

Hello.

En VBA, essaie ce code. Il te suffira de l'adapter.

Tcho !

Sub Mini_Positif()

Dim r_Cell As Range
Dim i As Integer
i = 32767 'départ le plus haut d'un integer
    For Each r_Cell In Range("B2:B14")
        If r_Cell < i And r_Cell <> 0 Then i = r_Cell
    Next r_Cell
    MsgBox i
    Range("C20") = i

End Sub

Bonjour,
Une formule matricielle à valider avec Ctrl + Maj et Entrée.
Cdlt.

{=MIN(
MIN(SI(($B$2:$B$14<>0)*($A$2:$A$14=$C$19);$B$2:$B$14));
MIN(SI(($C$2:$C$14<>0)*($A$2:$A$14=$C$19);$C$2:$C$14))
)}
8test1.xlsx (12.18 Ko)

Super fonction très bien mais il me le faut en vba...

Merci Jean-Eric, mais j'obtiens toujours la valeur 2 quelle que soit la référence. De plus la colonne C ne semble pas être prise en compte

Jean-éric, j'ai modifié ton code pour prise en compte de la colonne C mais le résultat ne tiens toujours pas compte de la référence saisie en C19

Bonjour à tous,

On peut faire,

=MIN(SI(($A$2:$A$14=$C$19)*($B$2:$C$14<>0);$B$2:$C$14))

Formule matricielle à valider par Ctrl+Maj+Entrée, elle se met alors automatiquement entre accolades

Cordialement

Salut,

Jean-éric, j'ai modifié ton code pour prise en compte de la colonne C mais le résultat ne tiens toujours pas compte de la référence saisie en C19

Elle sert à quoi ta référence au juste ? pour trouver la plus petite valeur d'une colonne tu as un fonction Excel (MIN) en VBA cela donne Application.WorksheetFunction.Min (Range("C:D"))

bonjour

une petite contribution sans validation

=SOMMEPROD(PETITE.VALEUR((B2:C14>0)*(A2:A14=C19)*(B2:C14);SOMMEPROD(--((B2:C14>0)*(A2:A14=C19)*(B2:C14)=0))+1))

Jean-Paul, la référence saisie en C19 est l'une de celles en colonne A, donc pour donner la plus petite valeur des colonnes B et D pour 1 référence (ici, A, B ou C)

Salmanazard,

Ta réponse en VBA me va parfaitement si ce n'est qu'elle ne tient pas compte de la référence saisie en C19.

Salut,

Jean-Paul, la référence saisie en C19 est l'une de celles en colonne A, donc pour donner la plus petite valeur des colonnes B et D pour 1 référence (ici, A, B ou C)

Pas très explicite tout cela, la valeur Mini, C'est la valeur Mini. Je ne comprends pas toujours ce que vient faire ta référence là dedans. est-ce le plancher bas, la valeur minimale à ne pas dépasser, ou bien la valeur maximale, ou autre.

Donnes un exemple concret, sinon tu n'auras que des réponses approximatives.

bonjour le fil,

Sub Teste()
     With Sheets("Feuil1")
          .Range("A2:A14").Name = "MyRefs"
          .Range("MyRefs").Offset(, 1).Resize(, 2).Name = "MyValues"
     End With
     s = "=AGGREGATE(15, 6, MyValues/ ((MyValues<> 0) * (MyRefs=MyRef)), 1)" 'la formule comme vous l'écrivez dans la feuille (en anglais)

     For Each ref In Array("A", "B", "C")
          ThisWorkbook.Names.Add "MyRef", ref
          MsgBox "minimum de " & ref & " est : " & Space(5) & Evaluate(s)
     Next
End Sub

Jean-Paul, désolée mais je ne peux pas être plus clair que dans le fichier joint.

7test3.xlsx (12.05 Ko)

Bonjour le forum,

@Souimanga, peut-être ainsi.

11souimanga.xlsm (16.45 Ko)

Cordialement.

Mdo100, merci c'est top !!

l'idée que MDO100 utilise, je l'avais fait un petit peu plus pratique à 11:55

1souimanga.xlsm (27.78 Ko)
Rechercher des sujets similaires à "petite valeur"