Problème différence somme

Bonjour à tous,

Je cherche à calculer un linéaire de charge. Le macro fonctionne bien à une condition près (voir ci-dessous en jaune). Pour l'intégralité de la macro, voir fichier joint.

le problème que je rencontre est sur la ligne en jaune ou je fais la différence entre le max sur 2 range différentes. Dans mon cas de figure, la différence devrait être de 0 mais ce n'est pas le cas quand je regarde la fenetre espion des variables et du coup, on rentre dans la boucle if alors qu'on ne devrait pas.

For numcol2charge = 90 To (Nbcolnonvide + 90)

diff = Application.WorksheetFunction.Max(Range("C" & "L" & Numligne & ":C" & "M" & Numligne)) - Application.WorksheetFunction.Max(Range("C" & "Y" & Numligne & ":D" & "J" & Numligne))
If (diff) <> 0 Then
If Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1) > 0 And Not IsEmpty(Cells(Numligne, numcol2charge)) And Not IsEmpty(Cells(Numligne, numcol2charge - 1)) Then
deltajour = Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1)
variable = DateAdd("m", 1, CDate(Cells(4, numcol2charge)))
chargerepartie = (Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1)) / (Application.NetworkDays_Intl(variable, Cells(Numligne, 6)))
valeur = 0
For numcolonne2 = 103 To (Nbcolnonvide + 103)
If Cells(3, numcolonne2) >= variable And Cells(3, numcolonne2) <= Cells(Numligne, 6) And Cells(3, numcolonne2) <> Cells(Numligne, 6) And Month(Cells(3, numcolonne2)) & Year(Cells(3, numcolonne2)) <> Month(Cells(Numligne, 6)) & Year(Cells(Numligne, 6)) Then
nbjourouvre = Application.NetworkDays_Intl(Cells(3, numcolonne2), WorksheetFunction.EoMonth(Cells(3, numcolonne2), 0))
valeur = valeur + (nbjourouvre * chargerepartie)
Cells(Numligne, numcolonne2).Value = Cells(Numligne, numcolonne2).Value + valeur
ElseIf Month(Cells(3, numcolonne2)) & Year(Cells(3, numcolonne2)) = Month(Cells(Numligne, 6)) & Year(Cells(Numligne, 6)) Then
nbjourouvre = Application.NetworkDays_Intl(Cells(3, numcolonne2), Cells(Numligne, 6))
valeur = valeur + (nbjourouvre * chargerepartie)
Cells(Numligne, numcolonne2).Value = Cells(Numligne, numcolonne2).Value + valeur
End If
Next
End If
End If
Next

Pourriez-vous m'aider svp?

Merci

bonjour,

tu as très probablement une erreur de précision due à la manière dont le résultat est stocké en mémoire.

remplace ceci

If (diff) <> 0 Then

par ceci

  If Abs(diff) > 0.000001 Then

Merci beaucoup pour l'astuce, ca marche nickel.

Par contre, pour ma curiosité personnelle, cette erreur de précision est-elle due à une anomalie d'excel?

bonjour,

c'est plutôt un problème de la norme IEEE 754

regarde ici

Merci

Rechercher des sujets similaires à "probleme difference somme"