Somme VBA incohérente

Bonjour à tous,

Bon, je suppose que c'est plutôt mon code que son résultat qui est incohérent ! Mais bon...

Voici mon problème :

Je code une macro qui traite une balance générale dont la somme doit être nulle. En premier lieux, je teste justement que la somme des soldes est bien égale à 0. Mes soldes sont en colonne C et commencent en deuxième ligne. Le code est le suivant :

sub ctrlbal()

i = 2
totalBal = 0

While Cells(i, 1) <> ""
        totalBal = totalBal + Cells(i, 3).Value
i = i + 1
Wend

If totalBal <> 0 Then
    If MsgBox("La balance N n'est pas équilibrée, veuillez la réimporter.", vbOKOnly, "Balance non équilibrée") = vbOK Then
        Exit Sub
    End If
End If

End sub

Si je prends la somme de tous mes soldes avec une formule, le résultat est bien 0. En revanche, avec mon code, ça me donne 0,17 !

Comment ça se fait ?

Merci d'avance pour votre aide.

Bonjour Waldstein, bonjour le forum,

Peut-être comme ça :

Sub ctrlbal()
Dim totalBal As Double
Dim DL As Integer

DL = Cells(Application.Rows.Count, 1).End(xlUp).Row
totalBal = 0
For I = 2 To DL
    totalBal = totalBal + CDbl(Cells(I, 3).Value)
Next I
If totalBal <> 0 Then
    If MsgBox("La balance N n'est pas équilibrée, veuillez la réimporter.", vbOKOnly, "Balance non équilibrée") = vbOK Then
        Exit Sub
    End If
End If
End Sub

Salut !

En effet, juste en déclarant totalBal comme double plutôt que single, ça fonctionne, à condition d'arrondir à deux chiffres (il y a des chiffres qui traînent loin derrière la virgule).

Merci beaucoup !

Bonjour Waldstein, Charlie,

Cette option avancée d'Excel pourra peut-être t'intéresser :

precision calcul

Note bien que cette option est pour le classeur en cours, donc c'est pas pour tous les classeurs ouverts !

dhany

Un poil risqué ça, non ?

Si je me mets à mettre des arrondi pour une meilleure lisibilité, ça peut me péter mes calculs...

Waldstein a écrit :

Un poil risqué ça, non ?

mais non ! comme dirait Fernand Reynaud : « mais c'est étudié pour ! » ; perso, c'est c'que j'utilise souvent quand y'a des calculs avec euros et centimes d'euros : pas besoin d'une grande précision ! de plus, note bien que la précision est selon le format affiché, donc :

1) si tu as besoin de 0 chiffres après la virgule : formats "# ##0" ou "0"

2) si tu as besoin de 2 chiffres après la virgule : formats "# ##0,00" ou "0,00"

3) si tu as besoin de 3 chiffres après la virgule : formats "# ##0,000" ou "0,000"

attention : si tu fais de la compta avec des CUMP (Coût Unitaire Moyen Pondéré), ces coûts ont besoin d'une plus grande précision, souvent de 5 chiffres après la virgule (voire plus) ; idem pour la tenue de fiches de stock pour le calcul d'un prix unitaire.

par contre, là où ça peut « te péter les calculs », c'est si tu fais des calculs scientifiques (du genre trigonométrie, physique quantique, ou autre), car ils ont besoin d'une précision maximale (pour ne pas dire infinie, sauf qu'aucun ordinateur au monde ne peut représenter mathématiquement de façon exacte cet infini ! ).

j'espère que ton application n'est pas pour planifier ton prochain voyage de la Terre à la Lune ! mais peut-être que tu prépares une nouvelle mission Apollo ? Waldstein = nouveau Neil Armstrong ? « un petit pas pour moi, un grand pas pour l'Humanité » !

rappel : un écart de quelques degrés peut t'mener à des milliers de kilomètres de distance du point d'arrivée prévu !

ne m'demande pas d't'aider davantage : j'ai aucune fusée d'secours pour venir te récupérer !

dhany

Rechercher des sujets similaires à "somme vba incoherente"