l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 mars 2012
-
31 mai 2010 à 16:24
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
1 juin 2010 à 09:12
Bonjour,
que de soucis avec les paramètres régionaux.
comment définir de manière sûre un nombre (anglais ou français) à partir d'une chaine de caractère dont le séparateur peut être indifféremment "," ou "."?
j'avais essayé avec try ... replace ... mais pour les options US il y a les séparateurs de milliers qui ne sont plus des espaces ou vide mais des "," ...
j'ai trouvé une solution vite faite (pas trop) mal faite pour régler ce souci EU-France:
Public Function cdbl_franglais(ByVal nombre As String) As Double
Dim reponse As Double
Dim nb As String
nb = ""
reponse = 0
Try
nb = Replace(nombre, ",", ".")
reponse = CDbl(nb)
cdbl_franglais = reponse
Exit Function
Catch ex As Exception
End Try
Try
nb = Replace(nombre, ".", ",")
reponse = CDbl(nb)
cdbl_franglais = reponse
Exit Function
Catch ex As Exception
End Try
cdbl_franglais = 0
End Function
Public Function cdbl_ameliore(ByVal nombre As String) As Double
Select Case cst.OPTION_REGIONNALES
Case "EU"
Return cdbl_EU(nombre)
Case "FRA"
Return cdbl_EU(nombre)
End Select
End Function
avec éventuellement possibilité de saisir d'autres options dans l'appli pour plus tard.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 mai 2010 à 19:28
Salut
D'où provient ta chaine 'nombre' ?
Car la source est la seule à pouvoir te dire sans équivoque sous quel format arrive la donnée.
Est-ce toi qui la collecte ? depuis quelle source ?
Sinon, dans la famille bidouillage, tu peux :
- détecter le nombre de virgules = NbV
- détecter la position d'une éventuelle virgule = PosV
- détecter le nombre de points = NbP
- détecter la position d'un éventuel point = PosP
Si NbV > 1 --> US
Si PosV < PosP --> US
Si NbP > 1 --> FR
Si PosP < PosV --> FR
Mais le jour où tu as un petit entier, tu seras incapable de déterminer.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 mars 2012 1 juin 2010 à 00:48
Salut,
nombre provient d'an fichier texte créé automatiquement par un autre logiciel. c'est à ce jour un nombre dont le séparateur est une virgule. les résultats doivent être affichés dans un format 123.4 ou 123,4
Ceci dit "l'ancêtre " de cette fonction provient de prog vb6 et vbA dans lesquelles je récupérais des données saisies (n'importe comment) par des utilisateurs et tratés sur des ordis très diverses, je n'avais pas le choix ça devait marché partout d'ou les remplacements gestion d'erreur.
ceci dit avec les séparateurs de millers il devient vraiment necessaire d'homogénéiser les ordis, les saisies quitte à programmer un formulaire de gestion des option régionnales propre à l'appli pourbprévoir les évolutions
Le formatage via les parametres regionnaux n'est simplement déstiné qu'a l'affichage a destination de l'utilisateur.
Et uniquement dans ce but (ecran, impression, etc.)