Extraire les chiffres après la virgule [Fermé]

Signaler
-
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
-
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 :)

5 réponses

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+
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
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
re bonjour,

j'ai déjà essayé mais la soustraction me donne 0 il prend pas en considération la virgule :(
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
4 363
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 !
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
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
4 363
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.
salut

merci bien pour votre aide :)

je programme sous Access , je suis désolé de ne pas l'avoir mentionné au début.
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
4 363
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
Messages postés
17297
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
30 octobre 2020
4 363
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