Function MoyBaseNombreMinimum(Base As Range, Nombre&, Minimum&, Ligne As String, Code&)
Dim t, nmax&, i&, j&, i1&, i2&, ech As Boolean, aux, combien&, som
   t = Base.Value      'lecture des données de la base dans le tableau t
 
   ' combien de lignes répondent aux deux critères Ligne et Code => nmax
   ' on déplace les valeurs de la 3ème colonne vers le haut du tableau t
   For i = 1 To UBound(t)
      If t(i, 1) = Ligne And t(i, 2) = Code Then
         nmax = nmax + 1
         t(nmax, 3) = t(i, 3)
      End If
   Next i
 
   ' si le minimum n'est pas atteint on quitte
   If nmax < Minimum Then MoyBaseNombreMinimum = "": Exit Function
 
   ' tri de la 3ème colonne de t du plus petit au plus grand de la ligne 1 à nmax
   Do
      ech = False
      For i = 1 To nmax - 1
         'si la valeur de la ligne i+1 est <= à celle de la ligne i, on inverse les lignes i et i+1
         If t(i + 1, 3) < t(i, 3) Then ech = True: aux = t(i, 3): t(i, 3) = t(i + 1, 3): t(i + 1, 3) = aux
      Next i
   Loop Until Not ech   'et cela jusqu'à ce qu'aucun échange ne ligne ne se produise plus
                        'sinon on repart pour un tour
 
   ' ne garder que les Nombre médians
   ' i1 est la ligne inférieure des Nombre valeurs à moyenner
   ' i2 est la ligne supérieure des Nombre valeurs à moyenner
   i1 = 1: i2 = nmax: combien = nmax
   ' on va retirer alternativement une petite valeur (i1=i1+1) puis une grande valeur (i2=i2-1)
   Do
      i1 = i1 + 1: combien = combien - 1
      If combien = Nombre Then Exit Do
      i2 = i2 - 1: combien = combien - 1
      If combien = Nombre Then Exit Do
   Loop
 
   'calcul de la somme des Nombre valeurs médianes
   For i = i1 To i2: som = som + t(i, 3): Next
   'calcul de leur moyenne
   MoyBaseNombreMinimum = som / Nombre
End Function
' c'est la version optimiste - on commence par retirer le plus petit, puis le plus grand,
' puis le plus petit, puis... jusqu'à ce qu'il ne reste que Nombre valeurs.
'  Pour la version pessimiste remplacer:
'      i1 = i1 + 1: combien = combien - 1
'      If combien = Nombre Then Exit Do
'      i2 = i2 - 1: combien = combien - 1
'      If combien = Nombre Then Exit Do
'  par:
'      i2 = i2 - 1: combien = combien - 1
'      If combien = Nombre Then Exit Do
'      i1 = i1 + 1: combien = combien - 1
'      If combien = Nombre Then Exit Do