Function MedianaGlicemias(NomPlage As String, Optional Année As Integer = 0, Optional JourSemaine As Byte = 0) As Double
Dim año As Integer, mes As Variant, nbjm As Byte
Dim total As Byte, Plage, cell As Range
Dim I As Byte, J As Byte
Dim Gli()
If Année = 0 Then año = Year(Now) Else año = Année
mes = Right(Left(NomPlage, Len(NomPlage) - 1), Len(Left(NomPlage, Len(NomPlage) - 1)) - 9)
Select Case mes
Case "Enero": mes = 1
Case "Febrero": mes = 2
Case "Marzo": mes = 3
Case "Abril": mes = 4
Case "Mayo": mes = 5
Case "Junio": mes = 6
Case "Julio": mes = 7
Case "Agosto": mes = 8
Case "Septiembre": mes = 9
Case "Octubre": mes = 10
Case "Noviembre": mes = 11
Case "Diciembre": mes = 12
End Select
nbjm = Day(DateSerial(año, mes + 1, 0))
Set Plage = Range(NomPlage)
For Each cell In Plage
'essai infructueux...
If cell.Value = "" Or cell.Value = 0 Then
' On ne fait rien
Else
I = I + 1
'Redimensionner le tableau au fur et à mesure des valeurs
' en préservant celles existantes
ReDim Preserve Gli(I) As Variant
Gli(I) = cell.Value
If UCase(Gli(I)) = "HI" Then Gli(I) = [Hi].Value
End If
Next cell
' Trier les valeurs
'algorithme de tri (type BubbleSort) pour des petits tableaux
'restitue le tableau trié
Dim K%, tmp
For I = LBound(Gli) To UBound(Gli)
J = I
For K = J + 1 To UBound(Gli)
If Gli(K) <= Gli(J) Then J = K
Next K
If I <> J Then
tmp = Gli(J): Gli(J) = Gli(I): Gli(I) = tmp
End If
Next I
MedianaGlicemias = Gli(10)
End Function