Function MaMediane(MaZone As Range, MonNbre As Integer, Ordre As Byte)
' MonNbre : N meilleurs ou N pires de la zone // Ordre : 0 pour ordre décroissant (médiane des meilleurs), sinon 1
Dim i As Integer, j As Integer
Dim ListeValeurs() As Double
ReDim ListeValeurs(MonNbre - 1)
j = 0
For i = 1 To MaZone.Rows.Count
If Application.Rank_Eq(MaZone.Cells(i, 1).Value, MaZone, Ordre) <= MonNbre Then ListeValeurs(j) = MaZone.Cells(i, 1).Value: j = j + 1
Next i
MaMediane = Application.Median(ListeValeurs)
End Function