Format mode ingenieur pour VBA

Résolu
Bonjour
Quelqu'un peut il me dire comment fait on pour afficher dans une variable string un nombre au format ingenieur ? multiple de 3 .
Par exemple : je veux afficher
200000 sous la forme de 200 E+3
ou 0.01 sous forme 10 E -3
J'ai essayé avec format(var,"##.##E+") ,cela fonctionne mais ce n'est pas au multiple de 3 , E+3 ou E+6 ou E-6 ect ...
Merci d'avance pour votre réponse

7 réponses

  1. Je me suis posé la question, Pas de réponses simple et rapide sur le Net,
    Alors après la bataille certes, mais quand même:

    La réponse est :
    ##0,0E+0

    Les deux "#" avant le premier "0" sert à dire espace réservé pour deux chiffres. Ici, on aura donc des multiples de milliers. !!!
    Le ",0" est le nombre de chiffres après la virgule (autant qu'on veut).
    Le E+ c'est pour l'affichage scientifique avec le signe.
    Le dernier "0" c'est le nombre de chiffres de l'exposant (autant qu'on veut).

    Salutation.
    3
    1. Bonjour LUST et merci pour ta réponse
      Mais cela ne me suffit pas , il faut que le format de sortie soit toujours en mode ingenieur .C'est à dire un multiple de 3 . Dans ton example format( 20000,"0.00E+")
      ton resultat est 2,00E+4
      et moi je veux que cela sorte sous forme 20,00E+3
      pour 2000 je veux 2,00 E+3
      pour 100 je veux 100 E+0
      pour 0.05 je veux 50,00E-3
      Il faut d'exposanr E soit toujours un multiple de 3 .
      soit E+3 ou E+6 ou E-12 ou E-9 etc
      Si tu as une solution Merci d'avance
      0
      1. tu peux essayer quelque chose du genre ###,00E+00
        ca marche sous excel...
        0
    2. tu sera obligé de créer une fonction qui force l'exposant à être un mulitple de 3!
      0
      1. tu peux essayer quelque chose du genre ###,00E+00
        ca marche sous excel...
        0
        1. Perso j'ai trouvé ça sur internet :

          Function FormatEngineering(Number As Variant, Optional DecimalPlaces
          > As Long = 1) As String
          > Dim Exponent As Long
          > Dim Parts() As String
          > Parts = Split(Format(Number, "0.0#############E+0"), "E")
          > Exponent = 3 * Int(Parts(1) / 3)
          > FormatEngineering = Format(Parts(0) * 10 ^ (Parts(1) - Exponent), _
          §>§ "0." & String(DecimalPlaces, "0")) & _
          §>§ "E" & Format(Exponent, "+0;-0")
          > End Function

          Je ne l'ai pas testé car je n'y connais rien en macro Excel mais je cherche aussi à avoir ce type d'affichage donc je vais m'y mettre !
          0
          1. Ca marche, moi j'ai essayé ça dans la fenêtre d'execution :

            ?format(20000,"0.00E+")
            2,00E+4

            En procédant de la sorte :

            Public Function strIngenieur(ByVal dblVar As Double) As String
            strIngenieur = Format(dblVar, "0.00E+")
            End Function

            Ca fonctionne :

            ?strIngenieur(2000000000)
            2,00E+9

            Voila
            -1
            1. Ben désolé, sais pas quoi c'est ca "Ingénieur"
              -1