Je ne sais pas comment paramétrer la fonction Format de VB.
Le "###.0E+0" utilisé dans Excel ne fonctionne pas.
En raison d'un grand nombre de données, je ne peux pas créer une fonction
qui convertirai les données une par une dans le format ingénieur.
Est-ce que quelqu'un aurait une idée ?
Merci beaucoup d'avance.
Chris
Oui oui je suis sur que ça ne fonctionne pas. Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format scientifique mais pas au format ingénieur. Exemple de résultats entre les deux formats :
Je voudrais donc les résultats comme dans la colonne Ingénieur.
Merci pour ton aide. Christian
"Jean-marc" wrote:
Christian wrote: > Bonjour, > > Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas > encore été converti en .NET par manque de temps > > Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel), > des nombres au format ingénieur (l'exposant est multiple de 3), donc > de la forme : > > 123.0E+0 > 12.3E+0 > 123.5E+3 > 123.5E+6 > 123.0E-3 > 123.5E-3 > 123.5E+6 > > Je ne sais pas comment paramétrer la fonction Format de VB. > Le "###.0E+0" utilisé dans Excel ne fonctionne pas.
Hello,
tu es sur que ça ne fonctionne pas ? Car j'ai essayé exactement comem tu l'indiques et ça donne les résultats attendus:
Oui oui je suis sur que ça ne fonctionne pas.
Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format
scientifique mais pas au format ingénieur.
Exemple de résultats entre les deux formats :
Je voudrais donc les résultats comme dans la colonne Ingénieur.
Merci pour ton aide.
Christian
"Jean-marc" wrote:
Christian wrote:
> Bonjour,
>
> Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas
> encore été converti en .NET par manque de temps
>
> Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel),
> des nombres au format ingénieur (l'exposant est multiple de 3), donc
> de la forme :
>
> 123.0E+0
> 12.3E+0
> 123.5E+3
> 123.5E+6
> 123.0E-3
> 123.5E-3
> 123.5E+6
>
> Je ne sais pas comment paramétrer la fonction Format de VB.
> Le "###.0E+0" utilisé dans Excel ne fonctionne pas.
Hello,
tu es sur que ça ne fonctionne pas ?
Car j'ai essayé exactement comem tu l'indiques et ça donne les
résultats attendus:
Oui oui je suis sur que ça ne fonctionne pas. Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format scientifique mais pas au format ingénieur. Exemple de résultats entre les deux formats :
Je voudrais donc les résultats comme dans la colonne Ingénieur.
Merci pour ton aide. Christian
"Jean-marc" wrote:
Christian wrote: > Bonjour, > > Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas > encore été converti en .NET par manque de temps > > Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel), > des nombres au format ingénieur (l'exposant est multiple de 3), donc > de la forme : > > 123.0E+0 > 12.3E+0 > 123.5E+3 > 123.5E+6 > 123.0E-3 > 123.5E-3 > 123.5E+6 > > Je ne sais pas comment paramétrer la fonction Format de VB. > Le "###.0E+0" utilisé dans Excel ne fonctionne pas.
Hello,
tu es sur que ça ne fonctionne pas ? Car j'ai essayé exactement comem tu l'indiques et ça donne les résultats attendus:
J'ai la solution à mon problème qui m'a été donnée par un MVP du forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin ça peut être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre de chiffres après la virgule.
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
Christian
"Vincent Guichard" wrote:
Bonjour,
En fait le format "###.0E+0" ne fonctionne que si le premier chiffre significatif est aligné sur une puissance de 10^(3xn-1). (je ne suis pas sur qu'on puisse dire comme ça :) )
enfin pour expliciter: Format$(0.123, "###.0E+0") va donner 123.0E-3 (Ok - premier chiffre significatif aligné sur 10-1 = 10^(3x0-1)) Format$(0.0123, "###.0E+0") va donner 123.0E-4 (Pas Ok - premier chiffre significatif aligné sur 10-2 = 10^(3x0-2)) Format$(123000, "###.0E+0") va donner 123.0E+3 (Ok - premier chiffre significatif aligné sur 105 = 10^(3x2-1)) Format$(12300, "###.0E+0") va donner 123.0E+2 (Pas Ok - premier chiffre significatif aligné sur 104 = 10^(3x2-2))
Il n'existe pas à ma connaissance de moyen de réaliser une notation d'ingénieur directement en VB, il va falloir que tu implémentes toi-même une fonction pour faire cela.
Vincent Guichard
Christian a écrit : > Oui oui je suis sur que ça ne fonctionne pas. > Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format > scientifique mais pas au format ingénieur. > Exemple de résultats entre les deux formats : > > Valeurs Scientifique Ingénieur > 1 1.00E+00 1.0E+0 > 100 1.00E+02 100.0E+0 > 10000 1.00E+04 10.0E+3 > 100000 1.00E+05 100.0E+3 > 0.1 1.00E-01 100.0E-3 > 0.001 1.00E-03 1.0E-3 > 0.00001 1.00E-05 10.0E-6 > 0.0000001 1.00E-07 100.0E-9 > > Je voudrais donc les résultats comme dans la colonne Ingénieur. > > Merci pour ton aide. > Christian > > "Jean-marc" wrote: > >> Christian wrote: >>> Bonjour, >>> >>> Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas >>> encore été converti en .NET par manque de temps >>> >>> Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel), >>> des nombres au format ingénieur (l'exposant est multiple de 3), donc >>> de la forme : >>> >>> 123.0E+0 >>> 12.3E+0 >>> 123.5E+3 >>> 123.5E+6 >>> 123.0E-3 >>> 123.5E-3 >>> 123.5E+6 >>> >>> Je ne sais pas comment paramétrer la fonction Format de VB. >>> Le "###.0E+0" utilisé dans Excel ne fonctionne pas. >> Hello, >> >> tu es sur que ça ne fonctionne pas ? >> Car j'ai essayé exactement comem tu l'indiques et ça donne les >> résultats attendus: >> >> Debug.Print Format$( N, "###.0E+0") >> >> Tu es sur de tes entrées ? >> >> Cordialement, >> >> -- >> Jean-marc Noury (jean_marc_n2) >> Microsoft MVP - Visual Basic >> FAQ VB: http://faq.vb.free.fr/ >> mailto: remove '_no_spam_' ; >> >> >> >> >>
Bonjour,
J'ai la solution à mon problème qui m'a été donnée par un MVP du forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin ça peut
être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre de
chiffres après la virgule.
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
Christian
"Vincent Guichard" wrote:
Bonjour,
En fait le format "###.0E+0" ne fonctionne que si le premier chiffre
significatif est aligné sur une puissance de 10^(3xn-1). (je ne suis pas
sur qu'on puisse dire comme ça :) )
enfin pour expliciter:
Format$(0.123, "###.0E+0") va donner 123.0E-3
(Ok - premier chiffre significatif aligné sur 10-1 = 10^(3x0-1))
Format$(0.0123, "###.0E+0") va donner 123.0E-4
(Pas Ok - premier chiffre significatif aligné sur 10-2 = 10^(3x0-2))
Format$(123000, "###.0E+0") va donner 123.0E+3
(Ok - premier chiffre significatif aligné sur 105 = 10^(3x2-1))
Format$(12300, "###.0E+0") va donner 123.0E+2
(Pas Ok - premier chiffre significatif aligné sur 104 = 10^(3x2-2))
Il n'existe pas à ma connaissance de moyen de réaliser une notation
d'ingénieur directement en VB, il va falloir que tu implémentes toi-même
une fonction pour faire cela.
Vincent Guichard
Christian a écrit :
> Oui oui je suis sur que ça ne fonctionne pas.
> Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format
> scientifique mais pas au format ingénieur.
> Exemple de résultats entre les deux formats :
>
> Valeurs Scientifique Ingénieur
> 1 1.00E+00 1.0E+0
> 100 1.00E+02 100.0E+0
> 10000 1.00E+04 10.0E+3
> 100000 1.00E+05 100.0E+3
> 0.1 1.00E-01 100.0E-3
> 0.001 1.00E-03 1.0E-3
> 0.00001 1.00E-05 10.0E-6
> 0.0000001 1.00E-07 100.0E-9
>
> Je voudrais donc les résultats comme dans la colonne Ingénieur.
>
> Merci pour ton aide.
> Christian
>
> "Jean-marc" wrote:
>
>> Christian wrote:
>>> Bonjour,
>>>
>>> Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas
>>> encore été converti en .NET par manque de temps
>>>
>>> Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel),
>>> des nombres au format ingénieur (l'exposant est multiple de 3), donc
>>> de la forme :
>>>
>>> 123.0E+0
>>> 12.3E+0
>>> 123.5E+3
>>> 123.5E+6
>>> 123.0E-3
>>> 123.5E-3
>>> 123.5E+6
>>>
>>> Je ne sais pas comment paramétrer la fonction Format de VB.
>>> Le "###.0E+0" utilisé dans Excel ne fonctionne pas.
>> Hello,
>>
>> tu es sur que ça ne fonctionne pas ?
>> Car j'ai essayé exactement comem tu l'indiques et ça donne les
>> résultats attendus:
>>
>> Debug.Print Format$( N, "###.0E+0")
>>
>> Tu es sur de tes entrées ?
>>
>> Cordialement,
>>
>> --
>> Jean-marc Noury (jean_marc_n2)
>> Microsoft MVP - Visual Basic
>> FAQ VB: http://faq.vb.free.fr/
>> mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
>>
>>
>>
>>
>>
J'ai la solution à mon problème qui m'a été donnée par un MVP du forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin ça peut être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre de chiffres après la virgule.
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
Christian
"Vincent Guichard" wrote:
Bonjour,
En fait le format "###.0E+0" ne fonctionne que si le premier chiffre significatif est aligné sur une puissance de 10^(3xn-1). (je ne suis pas sur qu'on puisse dire comme ça :) )
enfin pour expliciter: Format$(0.123, "###.0E+0") va donner 123.0E-3 (Ok - premier chiffre significatif aligné sur 10-1 = 10^(3x0-1)) Format$(0.0123, "###.0E+0") va donner 123.0E-4 (Pas Ok - premier chiffre significatif aligné sur 10-2 = 10^(3x0-2)) Format$(123000, "###.0E+0") va donner 123.0E+3 (Ok - premier chiffre significatif aligné sur 105 = 10^(3x2-1)) Format$(12300, "###.0E+0") va donner 123.0E+2 (Pas Ok - premier chiffre significatif aligné sur 104 = 10^(3x2-2))
Il n'existe pas à ma connaissance de moyen de réaliser une notation d'ingénieur directement en VB, il va falloir que tu implémentes toi-même une fonction pour faire cela.
Vincent Guichard
Christian a écrit : > Oui oui je suis sur que ça ne fonctionne pas. > Par exemple Format$(0.001, "###.0E+0") donne 100.0E-5 ce qui est au format > scientifique mais pas au format ingénieur. > Exemple de résultats entre les deux formats : > > Valeurs Scientifique Ingénieur > 1 1.00E+00 1.0E+0 > 100 1.00E+02 100.0E+0 > 10000 1.00E+04 10.0E+3 > 100000 1.00E+05 100.0E+3 > 0.1 1.00E-01 100.0E-3 > 0.001 1.00E-03 1.0E-3 > 0.00001 1.00E-05 10.0E-6 > 0.0000001 1.00E-07 100.0E-9 > > Je voudrais donc les résultats comme dans la colonne Ingénieur. > > Merci pour ton aide. > Christian > > "Jean-marc" wrote: > >> Christian wrote: >>> Bonjour, >>> >>> Je travaille sur un projet qui est en VB6. Vu sa taille, il n'a pas >>> encore été converti en .NET par manque de temps >>> >>> Mon problème est que j'ai besoin d'afficher en VB (pas dans Excel), >>> des nombres au format ingénieur (l'exposant est multiple de 3), donc >>> de la forme : >>> >>> 123.0E+0 >>> 12.3E+0 >>> 123.5E+3 >>> 123.5E+6 >>> 123.0E-3 >>> 123.5E-3 >>> 123.5E+6 >>> >>> Je ne sais pas comment paramétrer la fonction Format de VB. >>> Le "###.0E+0" utilisé dans Excel ne fonctionne pas. >> Hello, >> >> tu es sur que ça ne fonctionne pas ? >> Car j'ai essayé exactement comem tu l'indiques et ça donne les >> résultats attendus: >> >> Debug.Print Format$( N, "###.0E+0") >> >> Tu es sur de tes entrées ? >> >> Cordialement, >> >> -- >> Jean-marc Noury (jean_marc_n2) >> Microsoft MVP - Visual Basic >> FAQ VB: http://faq.vb.free.fr/ >> mailto: remove '_no_spam_' ; >> >> >> >> >>
Jean-marc
Christian wrote:
Bonjour,
J'ai la solution à mon problème qui m'a été donnée par un MVP du forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin ça peut être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre de chiffres après la virgule.
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
J'ai la solution à mon problème qui m'a été donnée par un MVP du
forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin
ça peut être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre
de chiffres après la virgule.
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
J'ai la solution à mon problème qui m'a été donnée par un MVP du forum US.
Je vous mets le code ci-dessous au cas où quelqu'un en aurait besoin ça peut être utile.
Pour info, le paramètre DecimalPlaces permet de déterminer le nombre de chiffres après la virgule.
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