Extraire les chiffres après la virgule

sanaa590 -  
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai besoin d'une fonction VBA qui permet d'extraire les chiffres après
la virgule d'une chaine numérique.
j'ai tout essayer la fonctionne indexof ne marche pas la fonctionne substring aussi la méthode Mdi a l'intérieur d'une boucle avec la conditionne s'il trouve la virgule il m'affiche !!!!

merci de m'aidez :)

A voir également:

5 réponses

Paf
 
bonjour,
ton nombre a t-il toujours le même nombre de chiffres après la virgule , et combien ?
partant de là, plusieurs solutions.

A+
0
sanaa590
 
bonjour ,
merci paf
non pas toujours mais je round pour avoir un seul nombre après la virgule

round(nombre,1)

et a partir de se chiffre :si il est supérieur ou inférieur pour que je puis terminer le traitement
0
Paf
 
re,
tu peux essayer de faire la différence entre ton nombre "roundé" et sa partie entière:

MonNB=round(nombre,1)
MonDécimal = MonNB - Int(MonNB)

si MonNB vaut 12,4 , MonDécimal vaudra 0,4

Bonne suite
0
sanaa590
 
re bonjour,

j'ai déjà essayé mais la soustraction me donne 0 il prend pas en considération la virgule :(
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut,

ce n'est pas un problème, mais avant d'écrire un code, le séparateur de décimale dans ton système c'est le point ou la virgule !

et lorsque tu as 10,05 par exemple tu veux récupérer 5 ou 05 !
0
sanaa590
 
bonjour,
le séparateur c'est un point ,et j'ai pas le cas d'avoir un nombre avec la virgule .05 toujours soit .333.... ou bien .6666... ou bien .9999 soit .5
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Re,

En supposant que la plage à traiter est en colonne A à partir de A2, le code bouclera jusqu'à la dernière cellule non vide, associer le code Transfert à un bouton

Sub Transfert()
[A2].Select
If ActiveCell <> "" Then Extraire_Décimale_Comme_Chiffre_Entier
Do While ActiveCell <> "" 'Evite de relancer le code
ActiveCell.Offset(1, 0).Select
Extraire_Décimale_Comme_Chiffre_Entier
Loop
ActiveCell.Offset(0, 1).ClearContents
End Sub

Sub Extraire_Décimale_Comme_Chiffre_Entier()
Dim d As Double
d = ActiveCell
'MsgBox (Mid(Str(d), InStr(1, Str(d), ".") + 1))
ActiveCell.Offset(0, 1) = (Mid(Str(d), InStr(1, Str(d), ".") + 1))
ActiveCell.Offset(0, 1).NumberFormat = "00"
End Sub

Tiens moi au courrant

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
sanaa590
 
salut

merci bien pour votre aide :)

je programme sous Access , je suis désolé de ne pas l'avoir mentionné au début.
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Re,

Je rajoute un code plus court

Sub Sépare_Valeurs()
Dim n, tablo, m As Variant
For n = 2 To Range("A65536").End(xlUp).Row
tablo = Split(Range("A" & n), ".")
For m = 0 To UBound(tablo)
Cells(n, 1 + m) = tablo(m)
Cells(n, 1 + m).NumberFormat = "00"
Next m
Next n
End Sub
0

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

Posez votre question
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Re,

Si ton problème est résolu, tu voudras bien nous le confirmer que l'on mette le statut de la discussion en résolu

Cordialement
0