OVH Cloud OVH Cloud

calcul tronqué

33 réponses
Avatar
jobill
Bonjour,
Avec excel 2010 j'obtiens, pour le calcul de
=(99*98*97*96*95*94*93*92*91*90*89*88*87)/(13*12*11*10*9*8*7*6*5*4*3*2*1)
le résultat faux suivant : 6186171974825300
au lieu du résultat juste 6186171974825304. La différence est de 4.
Le format de la cellule est nombre avec 0 décimale, le calcul est identique avec 1 ou plusieurs décimales.
Comment faire pour obtenir un calcul juste?
Cordialement.

10 réponses

1 2 3 4
Avatar
isabelle
bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.

Avatar
Jacquouille
Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
salut Jacques,

oui, pour obtenir le bon résultat sur la feuille il faut le mettre en texte

Range("A1") = "'" & resultat

isabelle

Le 2015-04-24 14:23, Jacquouille a écrit :
Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1 .....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com

Avatar
Péhemme
Salut Jacquouille,

Tu n'as pas suivi ?
;-)
On te dit en texte... c'est du texte...
:-))
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
mhe1m5$jmd$

Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable
dans le msgbsox et pas en A1?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
mhfb4j$ca1$

Salut Jacquouille,

Tu n'as pas suivi ?
;-)
On te dit en texte... c'est du texte...
:-))
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
mhe1m5$jmd$

Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
non, une cellule de la feuille de calcul ne va pas au delà de 15 "caractères"
pour un nombre
tape le chiffre suivant dans une cellule (Format = "0") et voix ce qui arrive
avec le dernier 7
1234567891234567

isabelle

Le 2015-04-25 17:06, Jacquouille a écrit :
Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable dans
le msgbsox et pas en A1?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
mhfb4j$ca1$

Salut Jacquouille,

Tu n'as pas suivi ?
;-)
On te dit en texte... c'est du texte...
:-))
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
mhe1m5$jmd$

Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com

Avatar
isabelle
eu... c'est à dire:
au delà de 15 "chiffres" pour un nombre
isabelle

Le 2015-04-25 17:24, isabelle a écrit :
non, une cellule de la feuille de calcul ne va pas au delà de 15 "caractères"
pour un nombre
tape le chiffre suivant dans une cellule (Format = "0") et voix ce qui arrive
avec le dernier 7
1234567891234567

isabelle

Le 2015-04-25 17:06, Jacquouille a écrit :
Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable dans
le msgbsox et pas en A1?

Jacquouille
Avatar
isabelle
l'explication exact ici: https://support.microsoft.com/fr-ca/kb/269370/fr
bonne nuit!
isabelle

Le 2015-04-25 19:07, isabelle a écrit :
eu... c'est à dire:
au delà de 15 "chiffres" pour un nombre
isabelle

Le 2015-04-25 17:24, isabelle a écrit :
non, une cellule de la feuille de calcul ne va pas au delà de 15 "caractères"
pour un nombre
tape le chiffre suivant dans une cellule (Format = "0") et voix ce qui arrive
avec le dernier 7
1234567891234567

isabelle

Le 2015-04-25 17:06, Jacquouille a écrit :
Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable dans
le msgbsox et pas en A1?

Jacquouille
Avatar
Péhemme
En complément des explications d'Isabelle, c'est la raison pour laquelle le
résultat obtenu sous VBA doit être transformé en String (pas en ficelle, en
Texte ;-) ) afin d'être renvoyé à la Feuille Excel.
Tu peux observer ce phénomène dans les macros des fichiers publiés ou comme
te l'a écrit Isabelle dans un message précédent :
Range("A1") = "'" & resultat
C'est une apostrophe entourée de 2 guillemets anglais.
Bon dimanche à Toi et bon dimanche à Tous.
Michel (le seul qui s'accroche)


"Jacquouille" a écrit dans le message de groupe de discussion :
mhgvkt$fmo$

Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable
dans le msgbsox et pas en A1?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
mhfb4j$ca1$

Salut Jacquouille,

Tu n'as pas suivi ?
;-)
On te dit en texte... c'est du texte...
:-))
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
mhe1m5$jmd$

Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Tu as raison. Après lecture du lien que tu m'as donné....
On me dit que la cel ne peut contenir que 15 car. Or, le zéro, c'est un car.
et, dans ton nombre, il y a 16 caractères, que le dernier soit 0 ou 7.
Maintenant, pourquoi Excel affiche-t-il ce 16° caractère et ne coupe-t-il
pas le nombre après 56 ?????
Voilà un beau sujet de réflexion pour les jours qui viennent.
Je te souhaite une bonne fin de WE
Jacques.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhh0m0$i7b$

non, une cellule de la feuille de calcul ne va pas au delà de 15
"caractères"
pour un nombre
tape le chiffre suivant dans une cellule (Format = "0") et voix ce qui
arrive
avec le dernier 7
1234567891234567

isabelle

Le 2015-04-25 17:06, Jacquouille a écrit :
Hello
Si je suis ton raisonnement pur et dur, rien ne devrait empêcher Excel de
m'afficher cela en texte en A1. Pourquoi affiche-t-il bien cette variable
dans
le msgbsox et pas en A1?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
mhfb4j$ca1$

Salut Jacquouille,

Tu n'as pas suivi ?
;-)
On te dit en texte... c'est du texte...
:-))
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
mhe1m5$jmd$

Hello Isa belle
J'ai ajouté ces deux lignes à ta macro.
Il est amusant de constater que MSGBOX fournit le bon résultat mais pas A1
.....
-----------
MsgBox resultat
[a1] = resultat
-----------------
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mhe0eq$ftc$

bonjour jobill,

Sub testDIV()
Dim Nombre As String, Diviseur As String, resultat As String
Nombre = "385214215596142443743232"
Diviseur = "62270208"
resultat = CDec(Nombre) / Diviseur
Debug.Print resultat
End Sub

isabelle

Le 2015-04-24 08:51, jobill a écrit :

J'ajoute une question :

Quelle macro dans Excel dois-je écrire pour obtenir
un calcul basique mais juste de cette division de deux grands nombres
38521421559614244374323200. divisé par 6227020800. ?
(le résultat doit bien sûr être 6186171974825304.)

Merci pour votre aide très pédagogique.





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com





---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
1 2 3 4