Mon 1er pb:
J'ai un nombre : 0.08756454121 et je veux
0.087, pour cela j'utilise:
val(left(0.08756454121,5)
C'est donc le pb qui a été résolu par les réponses précédentes.
Mon 2ème pb:
mon nombre 0.08756454121 est stocké dans la mémoire de VBA comme ceci: 8.756454121E-02
donc quand j'utilise
val(left(8.756454121E-02,5) j'obtiens 8.756 et non 0.087 comme je le souhaitais!!??!!
J'ai le même problème : une variable dont je ne connais pas le contenue que je multiplie par un pourcentage et je souhaite un résulta à 2 décimales.
J'ai essayé TRUNC mais cela ne fonctionne pas, je ne suis pas satisfait des autres réponses qui ne me donne que des info partielles. Voila ce que j'ai fais :
Dim Z As String, Z1 As String, Z2 As String, Z3 As Single
Z = Cells(3, 16) 'copie de la cellule dans une variable
Z1 = Int(Z) 'partie entière du nombre
Z2 = Len(Z1) 'longueur de la partie entière
Z3 = Left(Z, Z2 + 3) 'ajouter 3 (2 décimales + la virgule)
Un essai qui renvoie un nombre et non un texte. On utilise une fonction XnDec(x, n) où x est le nombre à tronquer et n le nombre de décimales à conserver.
Attention! Il faut rester raisonnable pour la valeur de n (pas trop grande, limite sup aux alentours de 25 - à vérifier).
La formule utilisée dans XnDec peut être directement utilisée seule dans du code VBA.
le code de la fonction :
VB:
Function XnDec(x, n)
XnDec = Int(x) + CDec(Left(CDec(x - Int(x)), n + 2))
End Function