Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal r As Range)
Set r = Intersect(r, Sh.[A:A], Sh.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
If IsNumeric(r) Then r.NumberFormat = IIf(Int(r) = r, "0", "0.000")
Next
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim r As Range
Set r = Intersect(Sh.[A:A], Sh.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r
If IsNumeric(r) Then r.NumberFormat = IIf(Int(r) = r, "0", "0.000")
Next
End Sub