Nombre de zéro(s) immédiatement après la virgule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Rebonjour,

Je voudrais connaître, pour des chiffres décimaux, le nombre de 0 (zéro(s)) qu'il y a immédiatement après la virgule.
Par exemple :
123,0258 ---> 1
5,00088 ---> 3
-0,000009036 ---> 5

J'avais conservé sous le coude ces 2 fonctions :

------------------------------------------------------------------------------------
Function HowLong(dNum As Double) As Byte
'Renvoie le nombre réel de chiffres après la virgule d'une nombre

Dim SepDec$, tmp$, posDec As Byte

On Error Resume Next

SepDec = Application.International(xlDecimalSeparator)
tmp = CStr(dNum)
posDec = InStr(tmp, SepDec)

If posDec = 0 Then
HowLong = 0
Else
HowLong = Len(tmp) - Len(Right(tmp, posDec))
End If

End Function

------------------------------------------------------------------------------------
Function ApresLaVirgule(cell As Range) As Byte

Dim SepDec$, tmp$, pos As Byte, res

On Error Resume Next

SepDec = Application.International(xlDecimalSeparator)
tmp = cell.Text
pos = InStr(1, tmp, SepDec)

If pos = 0 Then
res = 0
Else
res = Left(Right(tmp, Len(tmp) - pos), 8)
End If
If Len(res) = 1 Then res = res * 10

ApresLaVirgule = Len(res * 1)

End Function

------------------------------------------------------------------------------------
En soustrayant ces 2 fonctions (je sens que certains vont rigoler au vu de cet infâme bricolage...) :
HowLong([K17]) - ApresLaVirgule([K17])

J'obtiens bien le résultat attendu, mais ça plante avec les nombres entiers. ¡Caramba!

Un grand merci pour m'aider à sortir du ¡Caramba!
 
Re : Nombre de zéro(s) immédiatement après la virgule

Bonjour à tous.
@ hoerwind : j'ai essayé ta formule, elle ne fonctionne pas, que les chiffres décimaux soit écrits avec une "," ou un "."
Ca marche chez toi ?
Si oui, et sans abuser, tu peux joindre un fichier, s'il te plaît ?
Merci d'avance.
 
Re : Nombre de zéro(s) immédiatement après la virgule

Bonjour pierrejean, Jean-Marcel,

Merci pour vos réponses.
J'ai retenu celle de pierrejean.
Les fonctions de Jean-Marcel me restituaient toujours 0, j'ai donc fait une petite modification :

Function RechercheNbDeZéro(MaValeur As Double)


SepDec = Application.International(xlDecimalSeparator)

For Compteur = Len(Split(MaValeur, SepDec)(0)) + 2 To Len(MaValeur)
If Mid(MaValeur, Compteur, 1) = 0 Then
RechercheNbDeZéro = RechercheNbDeZéro + 1
Else
Exit Function
End If
Next
End Function

Mais le problème c'est qu'elle compte TOUS les zéros après la virgule et où qu'ils soient, alors que je ne veux compter que les zéros situés immédiatement après la virgule jusqu'au premier chiffre qui ne soit pas zéro.
Ex : 5000,205 ---> 1, alors que l'on attendait 0
0,00009025 ---> 5, alors que l'on attendait 4

Bonne fin d'après-midi à tous.
 
Re : Nombre de zéro(s) immédiatement après la virgule

Bonjour à tous 🙂

Pas très en avance mais je pense que ça peut intéresser :

Code:
Function NBZERO(n#) As Byte
Dim t$
t = Replace(n, ",", ".")
t = Mid(t, InStr(t, ".") + 1, 20)
NBZERO = Len(t) - Len(CStr(Val(t)))
End Function
Aucune boucle, fonctionne quelque soit le séparateur décimal.

A+
 
Re : Nombre de zéro(s) immédiatement après la virgule

Re,

Par formule, sur le même principe que ma fonction VBA :

Code:
=SI(A1=ENT(A1);0;NBCAR(STXT(A1;TROUVE(STXT(0,1;2;1);A1)+1;20))-NBCAR(--STXT(A1;TROUVE(STXT(0,1;2;1);A1)+1;20)))
Le séparateur décimal peut être la virgule ou le point.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Retour