Sub NbMaxChiffresAfterVirgule()
Dim c As Range, i As Byte, nb(4) As Byte, tableau
For Each c In [Zardoz] 'nom de la plage de 4 cellules contenant les 4 valeurs
i = i + 1
nb(i) = ChiffresAfterVirgule(c.Value, 1)
Next
tableau = Array(nb(1), nb(2), nb(3), nb(4))
[S14] = Application.Max(tableau) 'résultat
End Sub
-----------------------------------------------------------------------
Function ChiffresAfterVirgule(dNum As Double, Opt As Byte)
'Renvoie le nombre de chiffres après la virgule ou tous les chiffres après la virgule
'- dNum : le chiffre à traiter
'- opt : si opt = 1 --> le nombre de chiffres après la virgule
' si opt <> 1 --> tous les chiffres après la virgule
'Ex : 125,587349 | opt = 1 --> 6
' opt <> 1 --> 587349
Dim SepDec$, tmp, posDec, nb As Double, cap$
SepDec = Application.International(xlDecimalSeparator)
tmp = CStr(dNum)
posDec = InStr(tmp, SepDec)
nb = Len(tmp) - Len(Right(tmp, posDec)) 'nombre de chiffres après la virgule
cap = Right(dNum, nb) 'chiffres après la virgule
ChiffresAfterVirgule = IIf(Opt = 1, IIf(posDec = 0, 0, nb), IIf(posDec = 0, 0, cap))
End Function