Nombre de "0" 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
Bonjour,

J'ai des nombres décimaux, par exemple :
0,01
0,00000569058

Je voudrais, par fonction, connaître le nombre de "0" qu'il y a après la virgule.
F(0,01) = 1
F(0,00000569058) = 5

Merci d'avance pour toute réponse.
 
Re : Nombre de "0" après la virgule

Bonjour-bonsoir Magic_Doctor, STephane,

Il y a sans doute bien plus simple, mais si la valeur figure en B3, ceci semble fonctionner:
Code:
=NBCAR(STXT(B3;TROUVE(",";B3)+1;99))-NBCAR(1*(STXT(B3;TROUVE(",";B3)+1;99)))
 
Re : Nombre de "0" après la virgule

Bonsoir,

STephane, le fil auquel vous faites allusion n'a strictement rien à voir avec ce fil. Relisez bien... Je demandais :
"Je voudrais tout simplement connaître le nombre de chiffres après la virgule"
Alors que sur ce fil je demande :
"Je voudrais, par fonction, connaître le nombre de "0" qu'il y a après la virgule"

J'ai fini "por tomar el toro por las guampas" (prendre le taureau par les cornes) en résolvant ce problème par les logarithmes décimaux.
Je passe par une fonction, n'étant pas fana des formules :
VB:
Function ZerosApresVirgule(x As Double) As Integer

    x = Application.WorksheetFunction.Log10(x)
    
    ZerosApresVirgule = Abs(Fix(x))

End Function

En fait, je voulais, pour les constantes de dissociation d'acides (Ka), obtenir un résultat plus agréable à la vue que, par exemple, 0,0000365 et le remplacer par 3,65 . 10^-5
Pour ceux qui seraient intéressés :
VB:
Function Ka(x As Double) As String

    Dim z As Double

    z = Application.WorksheetFunction.Log10(x)
    
    Ka = x * 10 ^ (Abs(Fix(z)) + 1) & " . " & "10^" & Fix(z) - 1

End Function

Buenas noches a todos
 
Re : Nombre de "0" après la virgule

Ach Marzel,

Et que faites fou de la peauté de l'ezprit ?

Réfléchissez bien, votre solution résoudrait-elle tous les cas de figures, suivant qu'il y ait 1 ou 25 "0" après la virgule avant que n'apparaisse le 1er entier qui ne soit pas nul ?
Ma foi, disposer d'une fonction qui règle le problème quelle que soit la valeur comprise dans l'intervalle ]0 ; 1[, je ne vois pas où se trouve le problème, d'autant plus que ça ne mange pas de pain.
Mais si vous aimez la polémique...

Adiós Marcelito
 
Re : Nombre de "0" après la virgule

Bonsoir Magic_Doctor, à tous,

Essayez cette formule:
Code:
=SIERREUR(MAX(-(ENT(LOG10(ABS(A1)))+1);0);0)

ou en VBA
VB:
Function NBzero(x)

On Error GoTo Err_NBzero
  NBzero = -(Int(Log(Abs(x)) / Log(10)) + 1)
  If NBzero < 0 Then NBzero = 0
  Exit Function
      
Err_NBzero:
  NBzero = 0
End Function
 

Pièces jointes

Re : Nombre de "0" après la virgule

re-Bonsoir Magic_Doctor ,

Un autre essai pour une fonction afin de formater un nombre en texte puissance de 10.
VB:
Function Notation10$(x As Double, NBRdecimales)
  Notation10 = Format(x, "0." & String(NBRdecimales, "0") & "E+0")
  Notation10 = Replace(Notation10, "E", " . 10^")
  Notation10 = Replace(Notation10, "+", "")
  Notation10 = Replace(Notation10, " . 10^0", "")
  If Notation10 Like "* . 10^1" Then Notation10 = Replace(Notation10, " . 10^1", " . 10")
End Function
 

Pièces jointes

Dernière édition:
Re : Nombre de "0" après la virgule

Bonsoir mapomme,

Effectivement, ma fonction plante assez souvent (je n'avais pas fait d'essais avec, par exemple, 0,001).
J'adopte en conséquence la vôtre. Un grand merci !
Comme quoi, dans un forum il n'y a pas que des onomatopées inutiles...
 
Re : Nombre de "0" après la virgule

Bonjour Magic_Doctor, salut aux autres,

Si le vrai problème est bien ceci :

En fait, je voulais, pour les constantes de dissociation d'acides (Ka), obtenir un résultat plus agréable à la vue que, par exemple, 0,0000365 et le remplacer par 3,65 . 10^-5

alors on peut utiliser cette formule très simple :
Code:
=SUBSTITUE(TEXTE(A1;"0,00E+0");"E";" . 10^")
ou en version espagnole :
Code:
=SUSTITUIR(TEXTO(A1;"0,00E+0");"E";" . 10^")
VBA c'est bien gentil mais à consommer avec modération, c'est mon conseil du jour.

A+
 
Re : Nombre de "0" après la virgule

Bonjour job, pas pu répondre avant...

Tu as certainement raison en conseillant de ne pas abuser de VBA.
En fait, ce que je voulais réellement obtenir quand j'ai, par exemple, 0,0000365, ce n'est pas exactement 3,65 . 10^-5, mais plutôt 3,65 . 10-5 (-5 étant, bien sûr, en exposant). Écriture que rédigerait n'importe quel prof sur un tableau, ou que l'on rencontrerait dans n'importe quel ouvrage où apparaissent des nombres avec des puissances (le symbole "^" n'apparaissant, que je sache, que dans les calculs informatiques). C'est plus "joli" et plus clair pour le pèlerin qui passerait par là... Pour ce faire, il me semble que VBA devient alors incontournable (le symbole "^" servant alors uniquement de "balise" pour résoudre le problème).
J'ai modifié la fonction de mapomme et là j'ai bidouillé, rebidouillé, jusqu'au ras-le-bol... sans pour autant parvenir à une solution qui règlerait tous les problèmes.
C'est nettement plus clair sur la PJ.

Merci d'avance pour toute tentative d'aide.
 

Pièces jointes

Re : Nombre de "0" après la virgule

Bonjour Magic_Doctor, le forum,

Dans ta macro Exposant remplace :

Code:
cel2 = Format(cel1, "0." & String(dec, "0"))
par :

Code:
cel2 = "'" & Format(cel1, "0." & String(dec, "0"))
Bonne journée et 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
11
Affichages
286
  • Question Question
XL pour MAC fonction si
Réponses
5
Affichages
230
Réponses
2
Affichages
163
Réponses
7
Affichages
262
Réponses
14
Affichages
388
Retour