bonjour à tous,
Ca fonctionne bien sauf pour un nombre de cas médians qui dépend du nombre de décimales :
12345,6789 retourne 1234 au lieu de 12340 ...
une correction pour ce cas
Function formatn4(n)
pointdecimal = Application.DecimalSeparator
n1 = n
If InStr(n, pointdecimal) > 4 Then
n1 = Left(n, InStr(n, pointdecimal) - 1)
End If
nombre = n1
For i = 1 To Len(nombre)
If Not Mid(nombre, i, 1) Like "[" & pointdecimal & "0]" Then
ctr = ctr + 1
ElseIf ctr > 0 And Mid(nombre, i, 1) = 0 Then
ctr = ctr + 1
End If
If ctr = 4 Then
nombre = Left(nombre, i)
Exit For
End If
Next i
If InStr(n1, pointdecimal) = 0 And Len(nombre) < Len(n1) Then nombre = nombre & String(Len(n1) - Len(nombre), "0")
formatn4 = nombre
End Function
ceci dit la solution de eriiic est nettement plus élégante et simple.