OVH Cloud OVH Cloud

Point ou virgule decimale?

5 réponses
Avatar
xx
Bonjour

Je cherche a determiner le symbole decimal sur la machine ou s'execute le
code: "." ou "," ou "?".
(Mes donnees sont lues sur un fichier US avec "." en symbole decimal
Suivant que mon ordinateur est US, FR, ou ..., je dois substituer a ce "."
le symbole decimal idoine pour transformer ce String en Double avant de
l'utiliser dans des calculs)

VbDecimalSymbol? NON
...


Merci

5 réponses

Avatar
François Picalausa
Bonjour/soir,

Réponse sur la faq:
http://faq.vb.free.fr

Pour le moment elle semble innaccessible mais la solution consiste à faire:
Format("0",".")
ou passer par les APIs

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


xx wrote:
Bonjour

Je cherche a determiner le symbole decimal sur la machine ou
s'execute le code: "." ou "," ou "?".
(Mes donnees sont lues sur un fichier US avec "." en symbole decimal
Suivant que mon ordinateur est US, FR, ou ..., je dois substituer a
ce "." le symbole decimal idoine pour transformer ce String en Double
avant de l'utiliser dans des calculs)

VbDecimalSymbol? NON
...


Merci


Avatar
Laurent Castagnetti
Par les API :

Private Declare Function GetProfileString Lib "kernel32" Alias
"GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String,
ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As
Long) As Long


'/ Conversion du separateur decimal
'/
Public Function ConvDecimal(vntValeur As Variant) As Variant

Dim strSeparateur As String
Dim intPosDecimal As Integer
Dim strSize As String
strSize = Space$(128)

On Error GoTo ChgtDecimal

'/ Lecture du Type de Separateur Decimal de Windows
strSeparateur = GetProfileString("intl", "sDecimal", "", strSize,
Len(strSize))
strSeparateur = Left$(strSize, strSeparateur)

'/ Lecture de la Position du Separateur Decimal

'/ Si Separateur = Virgule
intPosDecimal = InStr(1, vntValeur, ",")
If intPosDecimal > 1 Then
ConvDecimal = CDec(Left$(vntValeur, intPosDecimal - 1) +
strSeparateur + Right$(vntValeur, (Len(vntValeur) - intPosDecimal)))
Exit Function
End If

'/ Si Separateur = Point
intPosDecimal = InStr(1, vntValeur, ".")
If intPosDecimal > 1 Then
ConvDecimal = CDec(Left$(vntValeur, intPosDecimal - 1) +
strSeparateur + Right$(vntValeur, (Len(vntValeur) - intPosDecimal)))
Exit Function
End If

'/ Si pas de Separateur
If intPosDecimal = 0 Then
ConvDecimal = Format(vntValeur, "0.00#") 'Le format depend du nbre
de chiffres apres la virgule que l'on veut pour les nombres entiers
convertis
Exit Function
End If


'/ Traitement des Erreurs
ChgtDecimal:
intPosDecimal = InStr(1, vntValeur, ".")
Resume Next

End Function

"François Picalausa" a écrit dans le message de news:
#p$
Bonjour/soir,

Réponse sur la faq:
http://faq.vb.free.fr

Pour le moment elle semble innaccessible mais la solution consiste à


faire:
Format("0",".")
ou passer par les APIs

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


xx wrote:
> Bonjour
>
> Je cherche a determiner le symbole decimal sur la machine ou
> s'execute le code: "." ou "," ou "?".
> (Mes donnees sont lues sur un fichier US avec "." en symbole decimal
> Suivant que mon ordinateur est US, FR, ou ..., je dois substituer a
> ce "." le symbole decimal idoine pour transformer ce String en Double
> avant de l'utiliser dans des calculs)
>
> VbDecimalSymbol? NON
> ...
>
>
> Merci




Avatar
Olivier GOUPIL
Mid(CStr(3 / 2), 2, 1)

A+


"xx" a écrit dans le message de
news:
Bonjour

Je cherche a determiner le symbole decimal sur la machine ou s'execute le
code: "." ou "," ou "?".
(Mes donnees sont lues sur un fichier US avec "." en symbole decimal
Suivant que mon ordinateur est US, FR, ou ..., je dois substituer a ce "."
le symbole decimal idoine pour transformer ce String en Double avant de
l'utiliser dans des calculs)

VbDecimalSymbol? NON
...


Merci




Avatar
François Picalausa
Bonjour/soir,

Mid(CStr(3 / 2), 2, len(CStr(3 / 2))-2)

En effet qui te dit que le séparateur décimal ne fait pas 3 caractères?

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Olivier GOUPIL wrote:
Mid(CStr(3 / 2), 2, 1)

A+


"xx" a écrit dans le message de
news:
Bonjour

Je cherche a determiner le symbole decimal sur la machine ou
s'execute le code: "." ou "," ou "?".
(Mes donnees sont lues sur un fichier US avec "." en symbole decimal
Suivant que mon ordinateur est US, FR, ou ..., je dois substituer a
ce "." le symbole decimal idoine pour transformer ce String en
Double avant de l'utiliser dans des calculs)

VbDecimalSymbol? NON
...


Merci




Avatar
xx
"François Picalausa" a écrit dans le message de
news:%23p$
Bonjour/soir,

Réponse sur la faq:
http://faq.vb.free.fr

Pour le moment elle semble innaccessible mais la solution consiste à


faire:
Format("0",".")
ou passer par les APIs



Je prends le 'Format(0,".")' et j'ajoute le WWW a mes signets.
J'avais daja eu des problemes avec les mois:
une application OK en Septembre (Sept, Sept, Sept)
plantera en Allemand en Octobre (Oct, Oct, Okt)
fonctionnera en Novembre (Nov, Nov, Nov)
plantera en Allemand en Decembre (Dec, Dec, Dez)
fonctionnera en Janvier (Jan, Jan, Jan)
plantera en Allemand et Anglais en Fevrier (Fev, Feb, Feb)

J'etais passe par un tableau de conversion...

Merci