XL 2019 Améliorer Function MinMax et plus grande valeur

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
J'ai créé une formule qui me permet de repartir des valeurs entre une note mini et une note maxi (Colonne C)
j'aimerais avoir une formules qui me permet par exemple de faire la meme chose mais en retirant soit les 2 plus grandes valeurs ou les 2 plus petites valeurs
MinMaxPlusGrande($B3; $B$3:$B$38; $I$1;$G$1;2)
Bonne journée
 

Pièces jointes

  • Fonction avec MinMax et Plusgrande valeur .xlsm
    19.5 KB · Affichages: 4

patricktoulon

XLDnaute Barbatruc
Bonjour
comment doit on considérer la chose
par exemple dans ton tableau la plus grande c'est 154
vient ensuite en 2d position 148
et vient à nouveau en 3 eme position 148
Alors que fait on ?
dans le doute j'ai fait les deux
VB:
Function MinMaxPlusPetiteTwoLeft(rng As Range)
    Dim T, I&
    T = Application.Transpose(rng.Value)
    For I = 1 To UBound(T): T(I) = IIf(Val(T(I)) = 0, 0, T(I)): Next
    MinMaxPlusPetiteTwoLeft = WorksheetFunction.Small(T, 3)
End Function

Function MinMaxPlusGrandeTwoRight(rng As Range)
    Dim T, I&
    T = Application.Transpose(rng.Value)
    For I = 1 To UBound(T): T(I) = IIf(Val(T(I)) = 0, 0, T(I)): Next
    If WorksheetFunction.Small(T, UBound(T) - 3) = WorksheetFunction.Small(T, UBound(T) - 2) Then x = UBound(T) - 4 Else x = UBound(T) - 3
    MinMaxPlusGrandeTwoRight = WorksheetFunction.Small(T, x)
End Function


'************************************************************************************
'sinon si on saute les doublons

Function MinMaxPlusPetiteTwoLeft2(rng As Range)    'saute le doublons
    Dim T, I&
    T = Application.Transpose(rng.Value)
    For I = 1 To UBound(T): T(I) = IIf(Val(T(I)) = 0, 0, T(I)): Next
    If WorksheetFunction.Small(T, 3) = WorksheetFunction.Small(T, 2) Then x = 4 Else x = 3
    MinMaxPlusPetiteTwoLeft = WorksheetFunction.Small(T, 3)
End Function

Function MinMaxPlusGrandeTwoRight2(rng As Range)    'saute le doublon
    Dim T, I&
    T = Application.Transpose(rng.Value)
    For I = 1 To UBound(T): T(I) = IIf(Val(T(I)) = 0, 0, T(I)): Next
    MinMaxPlusGrandeTwoRight = WorksheetFunction.Small(T, UBound(T) - 3)
End Function
noyeux joel
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour Patricktoulon,
Je ne comprends pas le TWO Left
Je me suis cerrtainement mal expliqué.
J'ai mis les resultats attendus dans les colonnes du fichier joint.
Pour arriver au bon résultat, j'ai manuelllement retiré les 2 +Gdes valeurs (Rouge) et calulé les resultats avec ma function MinMax. Idem avec les 3 plus petites en vert.
J'aimerais que la fonction calcul les notes (Minis et Maxis) en retirant les 2 ou 3 ou plus des plus grandes valeurs ou plus petites valeurs
Joyeux Noel
 

Pièces jointes

  • Fonction avec MinMax et Plusgrande valeur .xlsm
    22.4 KB · Affichages: 0

patricktoulon

XLDnaute Barbatruc
re
imagine un array de nombre
et bien le TwoLeft c'est le 2d en partant dela gauche et le TwoRight c'est le 2d en partant de droite
et ça repond exactement a ce que tu a demandé
je te cite
j'aimerais avoir une formules qui me permet par exemple de faire la meme chose mais en retirant soit les 2 plus grandes valeurs ou les 2 plus petites valeurs
si c'est pas ça il va falloir t'exprimer intelligiblement
 

carlos

XLDnaute Impliqué
Supporter XLD
Re,
je ne comprends pas tout de vos réponses.
Mon array serait les 3 colonnes du fichier envoyé?
Le "rng As Range" que j'ai mis dans le dernier fichier joint est il bon car il selectionne la colonne des valeurs?
Je suis perdu...
Je ne sais pas comment l'exprimer intelligiblement mieux.
Bonne nuite
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour ,
Pouvez vous m'aider?
Le fichier joint est plus clair je pense. ca ne marche pas.
J'ai mis dans le fichier joint l'attendu.
"j'aimerais avoir une formules qui me permet par exemple de faire la meme chose mais en retirant soit les 2 plus grandes valeurs ou les 2 plus petites valeurs"
"La meme chose " c'est le calcul de la note min et la note Maxi
" en retirant soit les 2 plus grandes valeurs" : Il y sont toujours.

Si quelqu"un peut m'aider à résoudre ce problème ce serait bien.
Cordialement
 

Pièces jointes

  • Fonction avec MinMax et Plusgrande valeur .xlsm
    22.4 KB · Affichages: 1

carlos

XLDnaute Impliqué
Supporter XLD
J'ai pas mal avancé sur ma function.
Pour le moment elle permet de mettre la note "vide" si la valeur est exclue(trop petite ou trop grande )
Mais le probleme est qu'elle compte quand meme les 2 ou 3 plus petites ou plus grande valeur dans la note.
 

Pièces jointes

  • Fonction avec MinMax et Plusgrande valeur .xlsm
    22.8 KB · Affichages: 1

carlos

XLDnaute Impliqué
Supporter XLD
Re,
Voici la function incomplete :
Public Function MinMaxSansNPetite(Valeurs As Variant, MaZone As Range, Minis, Maxis, N As Byte)
If IsNumeric(Valeurs) And Valeurs <> "" And Valeurs > WorksheetFunction.Small(MaZone, N) Then
MinMaxSansNPetite = Round(Minis + (Application.WorksheetFunction.Min(MaZone) - Valeurs) * (Maxis - Minis) / (Application.WorksheetFunction.Min(MaZone) - Application.WorksheetFunction.Max(MaZone)), 1)
Else
If Not IsNumeric(Valeurs) Then
MinMaxSansNPetite = Valeurs
Else
MinMaxSansNPetite = ""
End If
End If
End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 259
Membres
103 167
dernier inscrit
miriame