Plus de 2 chiffres après la virgule

Bonsoir,

J'ai constaté par hasard que la valeur de la cellule du total des dépenses en VBA: MsgBox ( Range("A5").value, il y avait plusieurs chiffres après la virgule, qu'on ne voit pas sur la feuille car les champs sont formatés, et la saisie par USF est formaté aussi CCur().

Le code que j'ai fait ne trouve rien dans la colonne, (si je rajoute un 3 eme chiffre dans une cellule, il trouve), pourtant le somme de la colonne comporte plus de 3 chiffres après la virgule,

Sub TrouveC()
Dim i%
Dim l%: l = ActiveSheet.Range("A5").End(xlDown).Row

With ActiveSheet
For i = 5 To l
If InStr(.Range("F" & i).Value, ",") <> 0 Then
If Len(.Range("F" & i).Value) - InStr(.Range("F" & i).Value, ",") > 2 Then
.Range("E" & i).Interior.ColorIndex = 3
End If
End If
Next
End With
End Sub

Mon but est de trouver les cellules coupables et de les corriger manuellement, c'est pour ça que je colore une cellule, soit avec du code si il y en a beaucoup.

Mon code n'est peut être pas bon.

Avez-vous une idée?

Bonne soirée.

Jean-Michel

Bonjour,

pas besoin de vba.
Avec une MFC ayant pour formule =MOD(F5*100;1)>0 ça le fait
Sélectionner F5:Fx avant de l'appliquer.

Sinon déposer un fichier anonymisé avec le pb
eric

Merci Eriiic

Bonjour,

J'ai essayé le MFC d' Eric en colonne H.

Le 1er chiffre qui est le total est bien en rouge, normal il a plus de 3 chiffres après la virgule, pour les autres en rouge je ne sais pas.

J'ai mis mon code qui lui trouve que le 1er chiffre en colonne G.

Boone journée.

Jean-Michel

123chiffres.xlsm (162.32 Ko)

Il y a des pouièmes invisibles suite aux conversions décimal/binaire.
Dans ce cas utilise : =ARRONDI(H1*100-ENT(H1*100);10)

Ce qui m'étonne c'est que ça le fasse malgré "et la saisie par USF est formaté aussi CCur()"
Tu peux mettre cette partie de code (avec la déclaration Ccur) ?
Si vraiment ça se produit avec CCur (ce que je voudrais bien voir pour le croire ), c'est au moment de l'écriture que tu devrais essayer de supprimer ces décimales indésirables avec un arrondi plutôt que de les chercher après.
eric

En vérité ça c'est fait au moment du passage du Franc vers l'Euro, je ne sais plus comment j'ai fait.

j' essaye ta formule.

Avec ta formule j'ai plus que le total en rouge et 3 chiffres qui ont l'air normaux (2eme fichier).

J'ai effacé et ressaisie les 3 chiffres, ça ne change rien?

13chiffres.xlsm (161.74 Ko)
83chiffres.xlsm (176.23 Ko)

Bonne soirée.

Jean-Michel

et bien arrondi un peu plus : =ARRONDI(H189*100-ENT(H189*100);8)
eric

Ca marche pas.

J'ai divisé la liste en 2 et bizarrement les 2 sommes sont normales.

(Somme du début à la moitié, puis somme de la moitié à la fin) j'espérais qu'une somme soit normale, ce qui aurait délimité le problème.

En tout cas merci beaucoup d'avoir pris le temps.

Jean-Michel

Comment ça, ça ne marche pas ?
J'avais testé... Tes 3 rouges disparaissent bien.

Oui mais ils ont bien 2 chiffres derrière la virgule.

Je vais vérifier.

Je comprend pas H189, mois je part de H7

Jean-Michel

Bonjour aussi...

Parce que j'ai copié la formule sur une ligne que tu signalais en anomalie.
Bien entendu il faut que tu mettes la bonne référence selon la plage où tu mets ta MFC

Bon le 3 chiffres rouges ont bien 2 chiffres derrière la virgule d'après ma formule .

Maintenant pourquoi ils sont en rouge.

Je voudrais bien savoir le pourquoi du comment comme ont dit, mais je ne veut pas d'embêter pour ça non plus.

J'ai essayé une formule trouvée sur internet qui me donne pas plus de 2 chiffres.

=SI(ESTERREUR(NBCAR(H7)-TROUVE(",";H7))=VRAI;0;NBCAR(H7)-TROUVE(",";H7))

je joint le fichier.

03chiffres.xlsm (248.66 Ko)

Où tu les vois rouges toi après avoir adapté la MFC

113chiffres-1.xlsm (177.53 Ko)

?

La somme de la colonne en H2 n'est pas en rouge d'accord, mais elle a 8 chiffres derrière la virgule????

Bonjour,

il faudrait savoir. Avant tu disais ça :

Bon le 3 chiffres rouges ont bien 2 chiffres derrière la virgule d'après ma formule .

Maintenant pourquoi ils sont en rouge.

Tu me perds là, je ne sais plus trop ce que tu veux...

Et bien remet =H1*100-ENT(H1*100)-0 et ils seront rouges

Mais tu en auras que tu ne pourras pas corriger puisque même saisis directement ils te ressortiront un écart.
Prend un classeur neuf, en A2: 144.52, en B2 =A2*100-ENT(A2*100)-0 te ramène 1.81899E-12

A lire : https://fr.wikipedia.org/wiki/IEEE_754#Format_simple_pr%C3%A9cision_(32_bits)
eric

Bonjour,

Ca devient trop compliqué pour moi.

Si je m'en tient au faits:

J'ai une liste de nombres de H7:H12 316 (copié de mon classeur de comptes à un nouveau) avec 2 décimales, vérifiés par la MFC d'Eric, par mon code, par une formule.

J'ai la somme de cette liste avec 8 décimales?

Donc il y a une erreur, peut être infime de 0,000000013, mais une erreur quand même.

Même si ma liste date de Mathusalem, 1994 AP JC, et qu'elle a subit le passage à l'Euro, ça devrait être juste.

Bon , ça vaut peut être pas le coup de s'attarder la dessus.

Je pense que ça vient de mon classeur et non d' Excel.

Merci encore Eric et bon dimanche.

Jean-Michel

Bonjour,

Ca ne vient ni de ton classeur, ni d'excel, mais du fait qu'un nombre est stocké en binaire.
Et un nombre 'rond' en décimal ne l'est pas forcément en binaire, comme 1/3 ne l'est pas en décimal (= 0.333333333333333333333...)
D'où une perte de précision (qui se cumulent si succession d'opérations) car les bits stockés sont limités à 15, que tu peux limiter avec un arrondi.
C'est ce que t'expliquait le lien.
eric

Peut on trouver le ou les nombres stocké en binaire.

bonne soirée

Jean- Michel

Ben.... tous

Comment faire?

Rechercher des sujets similaires à "chiffres virgule"