Deux petites fonctions qui permettent d’extraire la valeur minimale ou maximale d’une série de valeurs dans une requête SQL ou dans un code VBA.
Les fonctions
Public Function getMin(ParamArray pa() As Variant) As Variant
Dim v As Variant
For Each v In pa
If getMin > v Then
getMin = v
ElseIf IsEmpty(getMin) And Not IsNull(v) Then
getMin = v
End If
Next v
End Function
Public Function getMax(ParamArray pa() As Variant) As Variant
Dim v As Variant
For Each v In pa
If getMax < v Then
getMax = v
ElseIf IsEmpty(getMax) And Not IsNull(v) Then
getMax = v
End If
Next v
End Function
Dim v As Variant
For Each v In pa
If getMin > v Then
getMin = v
ElseIf IsEmpty(getMin) And Not IsNull(v) Then
getMin = v
End If
Next v
End Function
Public Function getMax(ParamArray pa() As Variant) As Variant
Dim v As Variant
For Each v In pa
If getMax < v Then
getMax = v
ElseIf IsEmpty(getMax) And Not IsNull(v) Then
getMax = v
End If
Next v
End Function
Paramètre
Elles acceptent un nombre quelconque de valeurs en paramètre grâce à l’utilisation du type ParamArray.
Particularités
- Ces fonctions gèrent les NULL c’est à dire qu’elles ne renvoient un NULL que si toutes les valeurs passées en paramètre sont nulles.
- Le type des paramètres doit être uniforme et peut être numérique, date ou string. Une adaptation du code sera nécessaire pour une bonne gestion des accents et autres caractères particuliers.
Exemples
'Pas d'erreur si aucun paramètre...
? getMax(), getMin()
'Renvoient 0 :
? getMax(NULL, 0, NULL), getMin(NULL, 0, NULL)
'Renvoient 5 et -1
? getMax(NULL, 0, 5, -1, NULL), getMin(NULL, 0, 5, -1, NULL)
? getMax(), getMin()
'Renvoient 0 :
? getMax(NULL, 0, NULL), getMin(NULL, 0, NULL)
'Renvoient 5 et -1
? getMax(NULL, 0, 5, -1, NULL), getMin(NULL, 0, 5, -1, NULL)
@+
Philippe