Extraire les chiffres après la virgule
sanaa590
-
Mike-31 Messages postés 19572 Date d'inscription Statut Contributeur Dernière intervention -
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 :)
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:
- Excel récupérer chiffre après virgule
- Excel trier par ordre croissant chiffre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Recuperer message whatsapp supprimé - Guide
- Word et excel gratuit - Guide
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+
ton nombre a t-il toujours le même nombre de chiffres après la virgule , et combien ?
partant de là, plusieurs solutions.
A+
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 !
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 !
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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
j'ai déjà essayé mais la soustraction me donne 0 il prend pas en considération la virgule :(