Récupérer les chiffres après la virgule

Etienne2323

XLDnaute Impliqué
Bonjour à tous,
une petite question VBA pour vous ce soir. J'aimerais simplement savoir comment tester à l'aide d'une condition si le nombre compris dans la cellule A1 est un nombre entier ou un nombre avec décimaux (je crois qu'on dit décimaux mais je ne suis pas certain ;) ). Si c'est un nombre à virgule, alors j'aimerais récupérer dans une variable la valeur des décimaux uniquement.

Une idée du code ?

Merci à vous !

Étienne
 

chris

XLDnaute Barbatruc
Re : Récupérer les chiffres après la virgule

Bonjour

la fonction INT donne la valeur entière
Le nombre - INT(nombre) donne la partie décimale.
 

Etienne2323

XLDnaute Impliqué
Re : Récupérer les chiffres après la virgule

Salut chris,
merci de la réponse. C'était ce que je cherchais à faire !

Bonne fin de soirée !

Étienne
 

youky(BJ)

XLDnaute Barbatruc
Re : Récupérer les chiffres après la virgule

Bonsoir à vous,
En testant ma macro j'ai eu des PB que j'ai du mal à comprendre!!!
Si je mets en A1 .......5.02
x = [A1]
y = Int([A1])
MsgBox (x - y)
la réponse du code est 1.999999999994E
Alors que si je mets
x = [A1] * 1000000
y = Int([A1]) * 1000000
MsgBox (x - y) / 1000000
j'ai bien mon ......0,2
Je ne comprends pas le pourquoi de la chose et souhaiterais bien comprendre le truc.
 

jeanpierre

XLDnaute Barbatruc
Re : Récupérer les chiffres après la virgule

Bonsoir Etienne2323, chris (bises), youky(BJ),

Il n'y a pas de truc sauf qu'Excel et son VBA (entre autres) ne travaillent pas sur tes valeurs.

Elles sont interprétées en Binaire pour procéder aux calculs et ensuite restituées en valeurs que nous sommes capables de lire couramment. Il traîne donc des résidus en plus ou en moins dans les dernières décimales.

Bonne soirée.

Jean-Pierre
 

YANN-56

XLDnaute Barbatruc
Re : Récupérer les chiffres après la virgule

Bonsoir,

Tu peux aussi tenter un truc du genre:

Private Sub CommandButton1_Click()
Dim VIRGULE As Variant
VIRGULE = ","

Worksheets("Feuil1").Cells(3, 2) = Left(Worksheets("Feuil1").Cells(3, 1), _
(InStrRev(Worksheets("Feuil1").Cells(3, 1), VIRGULE, -1, vbTextCompare)) - 1)

Worksheets("Feuil1").Cells(3, 3) = Mid(Worksheets("Feuil1").Cells(3, 1), _
(InStrRev(Worksheets("Feuil1").Cells(3, 1), VIRGULE, -1, vbTextCompare) + 1), 5)

End Sub

Voir Classeur joint

Bonne soirée

YANN-56
 

Fichiers joints

Etienne2323

XLDnaute Impliqué
Re : Récupérer les chiffres après la virgule

Salut à vous tous, le forum,
peut-être une piste de solution pour Youky(BJ). Plutôt que de faire des multiplications et des divisions pour arriver à ta réponse, peut être que la fonction "Round(" . Voici l'exemple.

Code:
Option Explicit
Sub test()

Dim Nombre As Single, Deux_Decimale As Single
Dim Entier As Long

Nombre = Cells(1, 1).Value
Entier = Int(Nombre)
Deux_Decimale = Round((Nombre - Entier), 2)

End Sub
Cordialement,

Étienne
 

Discussions similaires


Haut Bas