XL 2010 Tronquer un nombre décimal/rationnel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

J'ai presque honte de poser cette question, mais je la pose quand même.

J'utilise une formule que j'ai développée. J'obtiens quasiment toujours un nombre décimal ou plutôt rationnel. Bref il y a toujours un paquet de chiffres après la virgule. Je voudrais tronquer ce chiffre à uniquement 2 décimales après la virgule mais sans affecter pour autant la 2ème décimale, de telle sorte que si celle-ci est suivie d'un "5" (3ème décimale) elle ne soit pas augmentée d'une unité.
Je m'explique au travers d'un exemple.
J'ai écri :
VB:
[N9] = Application.WorksheetFunction.Round([C7] * [F6] / ([C8] * firstvolrestant), 2)
Ce qui donne :
[N9] = 0,746268656716418 soit, en arrondissant : 0,75
Or, je voudrais 0,74

Comment s'y prendre ?

Merci pour tout commentaire.
 
Dernière édition:
Bonjour à tous

Comme cela peut être
VB:
Sub a()
Range("A1") = 0.746268656716418
'deux possibilités
MsgBox Application.Floor(Range("A1"), 0.01)
MsgBox Application.RoundDown(Range("A1"), 2)
End Sub

EDITION: Bonjour JHA, même idée que toi 😉
 
Dernière édition:
Bonjour ModesteGeedee

Je venais de dire qu'on ne peut pas utiliser Application.Trunc (voir mon précédent message)
(message d'erreur (en tout cas) dans Excel 2013)

Donc pour y pallier, une fonction personnalisée
VB:
Sub b()
Range("A1") = 0.746268656716418
MsgBox TRONQUER(Range("A1"), 2)
End Sub
Public Function TRONQUER(ByVal V As Double, ByVal N As Integer) As Double
TRONQUER = Int(V * (10 ^ N)) / (10 ^ N)
End Function
 
Bonjour tout le monde,

D'abord, merci pour votre intérêt.

Modeste geedee, je confirme ce qu'avance Staple1600 :
VB:
WorksheetFunction.Trunc([N9],2)
ne marche pas !
J'avais essayé en vain, d'où ma question.

Staple1600, ta fonction a l'air de marcher très bien.

Bonne journée.
 
Bonsour®
Re

ModesteGeedee
Quel est le souci d'employer ARRONDI.INF ou PLANCHER plutôt que TRONQUE ?
PS: Sur ton Excel, tu as bien un message d'erreur avec Application.Trunc, non ?
affirmatif ...
😉
il n'y a aucun souci, il s'agit d'une réponse à Mapomme il y a quelque temps à propos du même sujet ...

😀 Quoique ...
l'arrondi inférieur ou Plancher se fait vers les valeurs inférieures, que le nombre soit positif ou négatif
alors que Tronque opère par rapprochement du zéro
😎
 
Bonsoir à toutes et tous 🙂,

Sur mon Excel 2010, les instructions suivantes semblent fonctionner :
VB:
Sub test()
Dim v

   Range("b:b").ClearContents
   [b1] = [TRUNC(100*0.746268656716418,0)/100]

   [a2] = 55.5555
   [b2] = [=TRUNC(100*a2,0)/100]

   v = 99.1188
   ActiveWorkbook.Names.Add Name:="AUX", RefersToR1C1:=v
   [b3] = [TRUNC(100*aux,0)/100]

   [b4] = [TRUNC(-0.746268656716418*100,0)/100]

   [a5] = -55.5555
   [b5] = [=TRUNC(100*a5,0)/100]

   v = -99.1188
   ActiveWorkbook.Names.Add Name:="AUX", RefersToR1C1:=v
   [b6] = [TRUNC(100*aux,0)/100]

End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour