XL 2013 Compréhension de la synthaxe du format scientifique.

bastienb

XLDnaute Nouveau
Bonjour à toutes et tous,
Je me permets d'ouvrir un nouveau sujet, car après recherche sur le forum je n'ai pas trouvé de sujet similaire qui répondait à cette question.
Je souhaiterais contrôler l'affichage de mes cellules et notamment en mode scientifique.
A la base je me suis retrouvé avec des nombres en 10^6, 10^7 et pour faciliter la lecture, je souhaitais les passer tous en 10^6.
Je ne sais pas trop pourquoi, mais en farfouillant dans les formats spéciaux, j'ai trouvé ce format "##0,00E+00" qui fait le travaille pour les Chiffres en 10^6, 10^7, ce qui correspondait bien a ma recherche initiale.
Jusqu'au jour ou je me suis retrouvé avec une valeur en 10^5. Et la ce format m' a passer le chiffre en 10^4 et pas en 10^6.
J'ai retrouvé le problème dans tous les sens, fait quelques tests et il semblerait que ce format affiche le chiffre en écriture scientifique par "groupe de 10^3". Je vous fais un Excel avec quelques exemples
Sauriez-vous m'expliquer a quoi correspondent ces # et ce qu'ils régissent. J'ai remarqué que lorsque j'en ajoute, ça augmente le nombre de chiffre devant la virgule ou bien ça change la puissance derrière mais je n'arrive pas comprendre la logique ...
La finalité de ce sujet serait idéalement d'arriver a forcer le format scientifique pour qu'il ne s'exprimer qu’en 10^6 par exemple dans mon cas.
Je vous remercie par avance pour votre aide
Bastien
 

Pièces jointes

  • Exemple2.xlsx
    8.7 KB · Affichages: 24

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour à toutes et tous,
Je me permets d'ouvrir un nouveau sujet, car après recherche sur le forum je n'ai pas trouvé de sujet similaire qui répondait à cette question.
Je souhaiterais contrôler l'affichage de mes cellules et notamment en mode scientifique.
A la base je me suis retrouvé avec des nombres en 10^6, 10^7 et pour faciliter la lecture, je souhaitais les passer tous en 10^6.
Je ne sais pas trop pourquoi, mais en farfouillant dans les formats spéciaux, j'ai trouvé ce format "##0,00E+00" qui fait le travaille pour les Chiffres en 10^6, 10^7, ce qui correspondait bien a ma recherche initiale.
Jusqu'au jour ou je me suis retrouvé avec une valeur en 10^5. Et la ce format m' a passer le chiffre en 10^4 et pas en 10^6.
J'ai retrouvé le problème dans tous les sens, fait quelques tests et il semblerait que ce format affiche le chiffre en écriture scientifique par "groupe de 10^3". Je vous fais un Excel avec quelques exemples
Sauriez-vous m'expliquer a quoi correspondent ces # et ce qu'ils régissent. J'ai remarqué que lorsque j'en ajoute, ça augmente le nombre de chiffre devant la virgule ou bien ça change la puissance derrière mais je n'arrive pas comprendre la logique ...
La finalité de ce sujet serait idéalement d'arriver a forcer le format scientifique pour qu'il ne s'exprimer qu’en 10^6 par exemple dans mon cas.
Je vous remercie par avance pour votre aide
Bastien

# vaut pour un chiffre significatif
0 vaut pour affichage de position de chiffre (même si non significatif)
#####0,00E+0 vaut pour puissance de 10 multiple de 6
upload_2017-7-17_16-41-42.png
 

eriiic

XLDnaute Barbatruc
Bonjour,

je dois dire que ton format me surprend. Il fut un temps où j'avais cherché et j'étais arrivé à la conclusion de l'inexistence du format dit Ingénieur.
Pourtant à voir sommairement ton fichier, pas de faille. Intéressant :)
Dès que j'ai un moment de libre je me penche dessus pour essayer de comprendre moi aussi...
Cependant des tests montrent cette méthode a ses limites pour contrôler exactement le nombre de chiffres avant la virgule, ce qui est nécessaire pour un exposant fixe.

Je m'étais rabattu sur une fonction personnalisée qu'on peut facilement adapter à ton besoin :
VB:
Function FormatEng(Nombre As Variant, Optional nbDecimales As Long = 2) As String
    'source : http://www.generation-nt.com/reponses/nombre-format-ingenieur-entraide-3222151.html#17586851
    Dim Exposant As Long
    Dim Parts() As String
    Parts = Split(Format(Nombre, "0.0#############E+0"), "E")
    'Exposant = 3 * Int(Parts(1) / 3)
    Exposant = 6 ' modif
    FormatEng = Format(Parts(0) * 10 ^ (Parts(1) - Exposant), "0." & String(nbDecimales, "0")) & "E" & Format(Exposant, "+0;-0")
End Function
eric
 

Modeste geedee

XLDnaute Barbatruc
Bonjour,

je dois dire que ton format me surprend. Il fut un temps où j'avais cherché et j'étais arrivé à la conclusion de l'inexistence du format dit Ingénieur.
pour le format ingénieur il s'agit des puissances de 10 multiples de 3
pour cela la partie mantisse va de 0 à 999
la partie exposant étant multiple de 3 on retient : E0, E3, E6, E9, E12 etc...
résumé :
##0E+#
l'exposant n'est donc pas fixe .
Cependant des tests montrent cette méthode a ses limites pour contrôler exactement le nombre de chiffres avant la virgule, ce qui est nécessaire pour un exposant fixe.
pour un exposant fixe mais restant en notation ingénieur multiple de 3
il faut utiliser un autre format contenant une division par 1000, obtenue en ajoutant un espace au format significatif
##0,000_"E+3"
le signe "_" est un espace et correspond à un format d'affichage divisé par 10^3
2 espaces : 10^6
3 espaces : 10^9
etc...
:rolleyes: attention ceci ne vaut que pour un coefficient diviseur
:confused: je n'ai pas connaissance d'un processus semblable pour un coefficient multiplicateur... :(
upload_2017-7-18_0-6-38.png
 

eriiic

XLDnaute Barbatruc
Bonjour,

je n'aurais jamais pensé à mettre l'exposant sous forme de chaine, chapeau modeste :)
En plus je l'avais sous les yeux dans la fonction personnalisée...
mapomme, en fait ça revient au format trouvé par le demandeur, au " " près ;-)
eric
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour eriiiic,

(...) mapomme, en fait ça revient au format trouvé par le demandeur, au " " près ;-) eric

Je ne pense pas. Le format que j'ai cité est indépendant de la valeur. Il ne comporte pas de division implicite (via des espaces) par 1000, 1.000.000 ..., c'est pourquoi le format est unique quelque soit le nombre. Ce format semble convenir également pour les petits nombre (nécessitant un exposant négatif).
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour eriiiic,
Je ne pense pas. Le format que j'ai cité est indépendant de la valeur. Il ne comporte pas de division implicite (via des espaces) par 1000, 1.000.000 ..., c'est pourquoi le format est unique quelque soit le nombre. Ce format semble convenir également pour les petits nombre (nécessitant un exposant négatif).
Bastienb à dit:
La finalité de ce sujet serait idéalement d'arriver a forcer le format scientifique pour qu'il ne s'exprimer qu’en 10^6 par exemple dans mon cas.
:cool: format
##0,000 "E+6"
l'exposant est fixe car ... chaîne :rolleyes:
mais ce format inclu 2 espaces soit division implicite par 10^6
et ne concernant que l'affichage, la valeur interne de la cellule est inchangée

remarque :
la notation "scientifique" propose un exposant variable en puissance de 10
la notation dite "ingenieur" est un sous-ensemble restreint avec exposant en puissances de 10 multiple de 3

ce format :
#####0,00E+00
mantisse variable format 6 positions significatives (10^6)
permet un affichage non limité à exposant 10^6 mais aux puissances multiples de 10^6 (E+6, E+12, E+18, etc ...)
upload_2017-7-18_14-49-59.png
 

eriiic

XLDnaute Barbatruc
Je ne pense pas. Le format que j'ai cité est indépendant de la valeur. Il ne comporte pas de division implicite (via des espaces) par 1000, 1.000.000 ...,
Parce que tu as mal regardé :)
Perdu au milieu du post 1 du demandeur :
j'ai trouvé ce format "##0,00E+00" qui fait le travaille pour les Chiffres en 10^6, 10^7
 

Discussions similaires