Variable numérique à 2 décimales

Résolu
Seppele Messages postés 3 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 9 juillet 2007 - 9 juil. 2007 à 21:04
Seppele Messages postés 3 Date d'inscription samedi 20 mai 2006 Statut Membre 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.

7 réponses

Seppele Messages postés 3 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 9 juillet 2007
9 juil. 2007 à 22:36
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.)


 
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 juil. 2007 à 21:14
Bonjour, je redirige vers vbfrance.com

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
9 juil. 2007 à 21:27
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

 
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 21:36
"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++
0

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

Posez votre question
Seppele Messages postés 3 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 9 juillet 2007
9 juil. 2007 à 22:07
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.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 22:26
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++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 22:27
ouh la les fautes de frappe, dur dur.
bah tu comprendras surement.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous