Problème de some à décimale dans excel

Signaler
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005
-
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005
-
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

Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
Les deux valeurs que tu additionnes sont-elles placées dans des variables? de quel type?
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
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
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
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.
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
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 ;-)
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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