Variable numérique à 2 décimales [Résolu]

Messages postés
3
Date d'inscription
samedi 20 mai 2006
Dernière intervention
9 juillet 2007
- - Dernière réponse : Seppele
Messages postés
3
Date d'inscription
samedi 20 mai 2006
Dernière intervention
9 juillet 2007
- 9 juil. 2007 à 22:36
Bonsoir .

C'est une première pour moi, alors excusez moi si je me trompe.
Langage VBA pour Excel
Je vais simplifier le problème au maximum
Sur la feuille1, j'ai une somme dont le format est nombre à 2 décimales. On va dire 69.12. Première question, si je change le format à "Standard", la valeur de la cellule est de 69.1218. Pourquoi?

Puis, par le biais d'une macro, je cherche cette somme si diverses conditions sont réunies, et la retranscrit sur la feuille2.

Dim MonTotal as Single
MonTotal = 0                  (pour initialiser)
MonTotal = Range("A1").Value            ---> ce qui donne 69.1218

ActiveCell.Value(     ) = MonTotal        ---> ce qui donne 69.1218 + 4 chiffres, ce qui fait un nombre avec 8 décimales.

Donc si l'un ou l'une d'entre vous pouvait me donner une solution pour que le nombre de départ 69.12 soit le nombre que je retrouve à l'arrivée.

Je vous remercie par avance.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
samedi 20 mai 2006
Dernière intervention
9 juillet 2007
3
Merci
ReBonsoir,


Je pense avoir trouvé la solution à mon problème.


Outils, Options, Calcul, puis j'ai coché Calcul avec la précision au format affiché, et visiblement celà fonctionne à merveille. Pour en être sûr, j'ai exécuté 3 fois ma macro.

Je vous remercie tous infiniment pour votre gentillesse.

(En espérant retrouver le chemin pour accéder à ce forum.)


 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Seppele
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
0
Merci
Bonjour, je redirige vers vbfrance.com

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL
Commenter la réponse de jesusonline
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
0
Merci
Salut,

Je ne sais pas si sous VBA cela existe, mais regarde la fonction : Round

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
"j'ai une somme dont le format est nombre à 2 décimales"
ça c'est l'affichage de la valeur, ne pas confondre avec la valeur en elle même.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
3
Date d'inscription
samedi 20 mai 2006
Dernière intervention
9 juillet 2007
0
Merci
Bien, la fonction Round existe, mais mon problème ne consiste pas à arrondir nom nombre, mais à avoir ce même nombre à l'arrivée.


A l'attention de BruNews, Votre réponse m'intéresse. Comment se fait-il qu'en additionnant des chiffres à 2 décimales, je puisse avoir un résultat qui sur ma feuille1 se traduise par un nombre à 4 décimales simplement par le fait que je change le format de "nombre" à "standard". Et comment encore ce même nombre qui de 2 décimales passe à 4, peut encore passer à 8 décimales au cours de ma macro, car pendant cette macro le nombre que je reçois est bien 69.1218. (ce qui résoudrait la moitié du problème).

A vous lire

Merci.
Commenter la réponse de Seppele
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
Un nombre à 2 décimales n'existe pas plus qu'à 3 ou N décimales. Excel stocke sous le format DOUBLE précision (64 bits) dès que c'est un flottant.
Ce que tu vois sur la feuille Excel dépend seulement du format ce cellule choisi, c'est à dire le format d'affichage des valeurs.

Pour t'en convaincre, mets 69.1218 dans une cellule et règle format d'affichafe sur 2 chiffres après la virgule.
ensuite essaie ceci:
Sub tets()
  Dim d As Double
  d = ActiveCell.Value
  Debug.Print d
  Debug.Print ActiveCell.Text
End Sub

sortira bien:
69.1218
69.12

Pour concure, tu fais:
mavaleur = Val(cell.text)
et là tu auras bien ce que tu vois.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
ouh la les fautes de frappe, dur dur.
bah tu comprendras surement.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.