Re,
Ci joint la macro testée et commentée: tes nombres sont formatés à N zéro + 2 chiffres
Attention:le nombre en mémoire est le nombre d'origine
Sub formateraNdecimales()
Dim texto As String, dec As String
' la cellule "mère" se trouve dans la plage (ici "B2:C3") où on _
execute la mise en forme, sinon on sort de la macro
'si cette cellule est en dehors supprime cette instruction
' a toi de voir quelle est la plage concernée et modifie en conséquence
If Intersect(ActiveCell, Range("B2:C3")) Is Nothing Then: Exit Sub
'on coupe le nombre en 2: partie entière et partie décimale
tablo = Split(ActiveCell, ",")
' mise sous la forme texte 0,000123 par exemple: "0," & tablo(UBound(tablo)) 8
'la variable "texto" donne le format scientique en puissance de 10 de la partie décimale: _
par exemple 0,000123 donne la puissance 10 puissance -4 soit 4 en valeur absolue
texto = Format("0," & tablo(UBound(tablo)), "0.00E+00")
'on repète autant de fois zéro+1 fois ( 2chiffres après les zéro) que la valeur trouvée à texto (4)
dec = Application.Rept("0", CInt(Right(texto, 2)) + 1)
'on met la plage B2:C3 ( à adapter) à ce format soit ici 5 chiffres après la virgule ( 0,00032)
Range("B2:C3").NumberFormat = "0." & dec