'---------------------------------------------------
'Convertit un nombre en nombre à 2 décimales exactes
'pour éliminer les décimales extravagantes d'Excel
'---------------------------------------------------
Function Nombre2Décimales(Nombre As Variant) As Double
Nombre2Décimales = CDbl(Format(Nombre, "0.00"))
End Function
Sub a()
With ActiveSheet
a2 = .[a2].Value
b2 = .[b2].Value
.[D2].Value = a2 - b2
End With
End Sub
Sub b()
Dim a2 As Long, b2 As Long
With ActiveSheet
a2 = .[a2].Value
b2 = .[b2].Value
.[D2].Value = a2 - b2
End With
End Sub
Oui pourquoi pas en effet, c'est pour ça que je vous sollicite pour avoir des idées différentes.Pourquoi pas plûtot Round(Nombre,2)
Ok, mais si tu passes par des Long, ce sont des entiers et tu perds les décimales.on force le VBA a calculer avec des Long
.[D2].Value = Round(.[A2].Value - .[B2].Value, 2)
Sub a()
With ActiveSheet
.[D2].Value = CCur(.[A2].Value) - CCur(.[B2].Value)
End With
End Sub
Exact.La A2 est donc une copie par valeur d'un résultat de calcul.
Bonjour @DranrebConseil: Pour vérifier si deux valeurs de cellules, par exemple A2 et B2, obtenues par des voies différentes sont fonctionnellement égales utilisez =ABS(A2-B2)<1E-12