OVH Cloud OVH Cloud

Nombre proche de 0

6 réponses
Avatar
Sophie
Bonjour,

Je programme en vba excel. Je rencontre un problème avec le format de
chiffre. Je divise deux chiffre, et le résultat est très proche de 0
comme 0.000006 par exemple. VBA me le met sous forme de 6.0E-6 alors que
moi je voudrais qu'il me le laisse sous la bonne forme. J'en ai besoin
sous cette forme afin de le transformer et string et le mettre dans une
requete sql.

6 réponses

Avatar
Adrien Gaudel
Je ne connais pas VBA vu que je travail qu'en VB, mais je suppose que les
fonction sont le même.
Ton nombre doit être dans un format numerique (sans doute float), il te faut
donc untiliser une fonction de conversion d'un un autre format (double ou
quelque chose du genre) avant d'appliquer la fonction de conversion en
chaîne.

"Sophie" a écrit dans le message de
news:41027236$0$31399$
Bonjour,

Je programme en vba excel. Je rencontre un problème avec le format de
chiffre. Je divise deux chiffre, et le résultat est très proche de 0
comme 0.000006 par exemple. VBA me le met sous forme de 6.0E-6 alors que
moi je voudrais qu'il me le laisse sous la bonne forme. J'en ai besoin
sous cette forme afin de le transformer et string et le mettre dans une
requete sql.


Avatar
Sophie
Adrien Gaudel wrote:
Je ne connais pas VBA vu que je travail qu'en VB, mais je suppose que les
fonction sont le même.
Ton nombre doit être dans un format numerique (sans doute float), il te faut
donc untiliser une fonction de conversion d'un un autre format (double ou
quelque chose du genre) avant d'appliquer la fonction de conversion en
chaîne.




Ca ne marche pas. Le problème c'est qu'il me sort toujours les chiffres
sous le format exponentiel. Je déclare la var en variant, pis j'utilise
cdec pour le mettre en decimal, puis cstring pour le transformer en chaine.
Avatar
Adrien Gaudel
ça devrait pourtant marcher. Peux-tu nous montrer le bout de code (avec les
declaraions de variables) là où tu fais la conversion ?

"Sophie" a écrit dans le message de
news:41028316$0$29370$
Adrien Gaudel wrote:
> Je ne connais pas VBA vu que je travail qu'en VB, mais je suppose que


les
> fonction sont le même.
> Ton nombre doit être dans un format numerique (sans doute float), il te


faut
> donc untiliser une fonction de conversion d'un un autre format (double


ou
> quelque chose du genre) avant d'appliquer la fonction de conversion en
> chaîne.
>

Ca ne marche pas. Le problème c'est qu'il me sort toujours les chiffres
sous le format exponentiel. Je déclare la var en variant, pis j'utilise
cdec pour le mettre en decimal, puis cstring pour le transformer en


chaine.
Avatar
Hervé
Bonjour Sophie,
Peut être avec un petit bricolage ?

Sub FormatNombre()
Dim I As Integer
Dim Debut As Integer
Dim LeFormat As String
Dim Nombre As Double

Nombre = 0.0000000006

Debut = InStr(CStr(Nombre), Application.DecimalSeparator)
If Debut = 0 Then Exit Sub

LeFormat = "0."
For I = Debut + 1 To Len(CStr(Nombre))
LeFormat = LeFormat & "0"
Next

[A1] = Nombre
[A1].NumberFormat = LeFormat

End Sub

Hervé.

"Sophie" a écrit dans le message de news:
41027236$0$31399$
Bonjour,

Je programme en vba excel. Je rencontre un problème avec le format de
chiffre. Je divise deux chiffre, et le résultat est très proche de 0
comme 0.000006 par exemple. VBA me le met sous forme de 6.0E-6 alors que
moi je voudrais qu'il me le laisse sous la bonne forme. J'en ai besoin
sous cette forme afin de le transformer et string et le mettre dans une
requete sql.


Avatar
Zoury
Salut Sophie! :O)

Essai ceci :
'***
Dim v

v = 6E-19
Debug.Print FormatNumber(v, 20)
'***

Mais tu devras me donner une bonne raison pour utiliser un Variant au lieu
d'un Single ou un Double... :O)
Le type Variant est le plus lent et le plus gourmant qui soit. Évite le
autant que possible (Je ne l'utilise jamais par exemple).

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Sophie" a écrit dans le message de
news:41027236$0$31399$
Bonjour,

Je programme en vba excel. Je rencontre un problème avec le format de
chiffre. Je divise deux chiffre, et le résultat est très proche de 0
comme 0.000006 par exemple. VBA me le met sous forme de 6.0E-6 alors que
moi je voudrais qu'il me le laisse sous la bonne forme. J'en ai besoin
sous cette forme afin de le transformer et string et le mettre dans une
requete sql.


Avatar
Sophie
Zoury wrote:

Mais tu devras me donner une bonne raison pour utiliser un Variant au lieu
d'un Single ou un Double... :O)
Le type Variant est le plus lent et le plus gourmant qui soit. Évite le
autant que possible (Je ne l'utilise jamais par exemple).




Pour utiliser cdec...

sinon finalement j'ai utilisé tout simplement un format.