Code VBA : Format d'un nombre
Bonjour,
J’ai un petit souci avec le fichier ci-joint, selon les explications qui y sont inscrites directement.
Est-ce que l’un de vous peut m’aider ?
Bonne journée.
Bonjour,
Ci-dessous une formule qui permet de trouver le nombre max de décimales. Tu pourrais récupérer cette valeur dans une variable pour ton code.
{=MAX(NBCAR(TEXTE((B3:B100)-ENT(B3:B100);"standard"))-2)}
C'est une matrice, valider par CTRL+MAJ+ENTREE mais tu dois certainement déjà le savoir vu le code de ta macro.
Je fais B3-ENT(B3) pour obtenir 5,58-5 = 0,58, je le transforme au format Standard avec TEXTE puis je compte le nombre de caractères que ça me donne, j'enlève 2 car je ne compte pas "0,".
J'ai utilisé TEXTE car sans ça NBCAR(B3-ENT(B3)) me donne 18 pour ta valeur 6,034 en B8 !!!! Excel trouve 0,0399999 avec la soustraction, bizarre. Problème résolu avec TEXTE.
Comme je fais ça sur la plage B3:B100 je récupère le MAX de toutes ces cellules, la matrice permet de faire ça justement sur B3:B100 et ne m'oblige pas à faire une formule par cellule.
Tu mets donc cette formule dans une cellule et dans ton code tu récupères cette valeur dans une variable (je vais l'appeler MaxDEC)
Ensuite pour formater tes cellules en colonne D tu dois mettre dans ton select case
ActiveCell.Offset(0, 1).NumberFormat = "0.00"
juste après le Range(ActiveCell.Offset(1, 1), ActiveCell.Offset(11, 1)).NumberFormat = "0.00"
(A mettre bien sûr pour chaque cas en fonction du nombre de décimales choisies au début par l'inputbox)
Tu peux probablement faire un select case en fonction de la variable MaxDEC pour cette ligne NumberFormat.
Le format 0.00 au 0.000, etc. doit pouvoir être fabriqué avec un for/next et du genre "0." & i où i vaut "0", à répêter autant de fois que vaut MaxDEX (désolé si je ne suis pas très clair mais il est tard).
Si j'ai le temps je t'envoie le fichier avec tout ce que j'ai dit.
A+ et bon courage.
Salut Dachevid,
Désolé pour le temps à te répondre, mais j'étais fort occupé cette fin de semaine
Ta formule magique m'a permis de résoudre mon problème ; c'est génial !
Si ça t'intéresse, voici la solution finale :
Encore mille mercis et, j'espère, à charge de revanche !
Bonnes salutations