Problème de some à décimale dans excel

Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 31 mai 2005 à 12:44
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 31 mai 2005 à 14:38
bonjour!

je veux additionner 2 valeurs contenues présentes sur une même feuille excel, grâce à VB6. pour cela j'additionne les range().value.

le problème, c'est qu'avec des décimales, le résultat est arrondi.

exple: 87,5 +37.5=126 et non 125...
comme si les chiffres étaient arrondis au point supérieur.

j'ai essayé de remédier à ce problème en mettant mes cellules à additionner et celle où j'insère le résultat au format nombre à une décimale avec Selection.NumberFormat = "0.0"
...

ca marche pas

peut-être y a-t-il une option sous VB6 qui prend en compte les décimales des range().value?

vous avez une idée? merci d'avance.

Daydayerement Vôtre

9 réponses

linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
31 mai 2005 à 13:08
Les deux valeurs que tu additionnes sont-elles placées dans des variables? de quel type?
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
31 mai 2005 à 13:15
pour chaque nom de fournisseur, je fais une boucle sur plusieurs lignes (qui ne se sui vent pas forcément) et j'additionne les valeurs comme suit:

Hours = Hours + Range(HoursColumn + CStr(Row)).Value

Hours est une var type integer, elle permet de connaitre les heures passées pour chaque fournisseur.
A chaque fois que j'ai fini pour un fournisseur, je fais:

TotalHours = TotalHours + Hours

Totalhours est de type integer, elle permet de connaitre au final le nombre total des heures...

peut être faut-il que je mette ces var sous forme de float ou un truc comme ca?

Daydayerement Vôtre
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
31 mai 2005 à 13:26
en fait, le problème ne vient pas de l'addition des valeurs dans la var Hours: le total des heures pour chaque fournisseur (var Hours) prend bien en compte les décimales.
Le problème est pour TotalHours (somme des hours), qui lui ple fait en arrondi...

Daydayerement Vôtre
0
linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
31 mai 2005 à 13:47
si tes variables Hours et TotalHours sont en Integer dans ce cas d'après leur nature elles ne peuvent avoir de virgules.

Par contre essaie de mettre tes variables en Double
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
31 mai 2005 à 13:56
je me doutais un peu que c'était un pb de type... je les ai mise en variant et c'est ok; avec double c'est bon aussi.

merci!

par contre tu pourrais m'expliquer la différence entre double, variant et long? varaint i me semble que le type peut changer selon ce que tu mets dans ta var... mais le reste je sais pas (une histoire d'allocation mémoire de stockage?)

Daydayerement Vôtre
0
linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
31 mai 2005 à 14:04
Les
<object id="alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_4.Click() variables de type Double] (à virgule
flottante en double précision) sont stockées sous la forme de nombres à virgule
flottante de 64 bits (8 octets) IEEE dont la valeur est comprise entre
-1,79769313486232E308 et -4,94065645841247E-324 pour les nombres négatifs et
entre 4,94065645841247E-324 et 1,79769313486232E308 pour les positifs.



Les
<object id="alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_4.Click() variables de type Long] (entier long) sont
stockées sous la forme de nombres signés de 32 bits (4 octets) dont la valeur
est comprise entre -2 147 483 648 et 2 147 483 647.
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
31 mai 2005 à 14:09
mais alors, comment choisit on entre un type long ou double? c'est la taille de ce qu'on veut y mettre qui détermine le choix?

Daydayerement Vôtre
0
linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
31 mai 2005 à 14:15
La taille des valeurs que l'on utilise détermine en effet le type de variable a utiliser.

Mais c'est aussi le fait que l'on veuille ou non pouvoir utiliser des nombres comportant des décimales.

En effet dans un long si on met 3.5 quand on l'affiche on obtient 4 ;-)
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
31 mai 2005 à 14:38
ok!

merci pour toutes tes réponses! c'est vrai que concernant les chiffres je faisiais pas assez attention au type de ar que j'allais manipuler... maintenant je le saurai!

@+

Daydayerement Vôtre
0
Rejoignez-nous