|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Virgule ou point? [ Archives Visual Basic / Texte ] (sbaguz)
Informations & options pour cette discussion
|
vendredi 5 novembre 2004 à 14:51:04 |
Virgule ou point?

sbaguz
|
Bonjour, je vais commencer un simple logiciel de calcul, mais j'ai un problème à résoudre auparavant, donc il me faut de l'aide. Ce que je voudrais savoir est: y a-t-il une façon (quelques lignes) de faire reconnaître automatiquement au logiciel si sur le PC où il va fonctionner le séparateur décimal est la virgule ou le point et donc éviter toute erreur de calcul? Merci.
|
|
|
|
vendredi 5 novembre 2004 à 15:07:05 |
Re : Virgule ou point?
|
|
vendredi 5 novembre 2004 à 15:49:13 |
Re : Virgule ou point?

chris81
|
salut, ya qd meme bcp plus court
TonChiffre = Replace(Tonchiffre,".",",")
cela veut dire que meme si TonChiffre est 10.5 ou 10,5 tu aura apres le replace 10,5 donc plus d'erreur dans les calculs
http://www.tarnweb.com http://www.correzeweb.com http://www.localetv.com
|
|
|
|
vendredi 5 novembre 2004 à 17:31:23 |
Re : Virgule ou point?

sbaguz
|
Merci à tous les deux je vais faire quelques essais? Ce que Gobillot propose est plus ou moins ce que je pensais : La façon d?avoir les informations sur les defaults du système? mais a ce moment là c?est un petit peu compliqué pour moi de bien comprendre ce gros ensemble de lignes cité? je vais l?étudier. Ce que chris81 propose est très simple et donc très intéressant, mais je ne pense pas qu?il s?agit d?une véritable solution, donc je te fais cette objection : tu me dis que TonChiffre = Replace(Tonchiffre,".",",") change par exemple 10.5 en 10,5 et donc j?aurais 10,5 en tous cas? ça va bien si mon PC a la virgule comme default, mais si je dois faire fonctionner le logiciel sur un PC quelconque, dont je ne connais pas le default ? Je vous demande s?il est possible d?unir vos idées, c?est-à-dire quelques lignes qui gagnent le default du système et après appliquer le Replace : Quelles sont ces lignes qui me donne cette information (probablement elles sont déjà dans la page conseillée par Gobillot)? Pourriez vous les commenter un petit peu? je suis débutant.
Merci encore pour la patience.
|
|
|
|
vendredi 5 novembre 2004 à 19:19:51 |
Re : Virgule ou point?

chris81
|
et ben avec le replace que ton ordi est la virgule pas defaut ou le point tu aura 10,2 http://www.tarnweb.com http://www.correzeweb.com http://www.localetv.com
|
|
|
|
vendredi 5 novembre 2004 à 19:45:34 |
Re : Virgule ou point?

Gobillot
|
Option Explicit
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Const LOCALE_SDECIMAL = &HE ' Symbole décimal Private Const LOCALE_STHOUSAND = &HF ' Séparateur des milliers
Dim Separateur As String
Private Sub Form_Load() Dim Lettre As String Dim Chiffre As Single Call GetUserLocaleInfo(Separateur) ' si pas trouvé --> arrêt programme ? If Separateur = " " Then MsgBox "Erreur", vbExclamation End End If
'1er cas Lettre = "123.456" Chiffre = Replace(Lettre, ".", Separateur) MsgBox Chiffre '2eme cas Lettre = "123,456" Chiffre = Replace(Lettre, ".", Separateur) MsgBox Chiffre
End Sub
Private Sub GetUserLocaleInfo(Symbole As String) Dim sBuffer As String Dim nBufferLen As Long Dim LCID As Long LCID = GetSystemDefaultLCID nBufferLen = 255 sBuffer = String$(nBufferLen, vbNullChar) nBufferLen = GetLocaleInfo(LCID, LOCALE_SDECIMAL, sBuffer, nBufferLen) If nBufferLen > 0 Then Symbole = Left$(sBuffer, nBufferLen - 1) Else Symbole = " " End If End Sub
|
|
|
|
|
vendredi 5 novembre 2004 à 20:38:14 |
Re : Virgule ou point?

CanisLupus
|
Salut, pourquoi faire si compliqué ?
Je pense que le prob se pose uniquement pour des saisies ou des conversions de variables texte en numérique. Dans ce cas, une méthode simple :
If IsNumeric("0.1") then ' Le séparateur est un point TaVariable = replace(TaVariable,",",".") else ' Le séparateur est une virgule TaVariable = replace(TaVariable,".",",") End If
voire même pour une saisie, dans le keypress d'une textbox :
If IsNumeric("0.1") then ' Le séparateur est un point if keyascii = 44 then keyascii = 46 else ' Le séparateur est une virgule if keyascii = 46 then keyascii = 44 End If
Bonne prog
Cordialement, CanisLupus
|
|
|
|
mardi 9 novembre 2004 à 11:31:11 |
Re : Virgule ou point?

sbaguz
|
Je suis désolé, mais vos idées ne semblent pas fonctionner. En détail : - Pour chris81 : Le but n?est pas de forcer le donné à être comme nous le voulons, mais comme chaque PC le veut. Tu dis « même si ton chiffre est 10.5 ou 10,5 tu auras après le replace 10,5 donc plus d'erreur dans les calcules», vrai si le logiciel va fonctionner sur un PC qui considère la virgule comme séparateur décimal, faux s?il va fonctionner sur un PC qui utilise le point. - Pour CanisLupus : Ce que tu propose est fascinant, mais soit que tu considères « 0.1 », soit que tu considères « 0,1 », IsNumeric donne toujours la valeur Vraie (peut-être parce que l?autre probablement est reconnu comme séparateur des milliers). - Pour Gobillot : Même si ton code est plutôt compliqué pour moi, il semblerait parcourir la route la meilleure : lire les defaults du PC. Mais si je l?utilise, il me dit que mon séparateur décimal est le point, mais au contraire il s?agit de la virgule? Est-ce que quelqu?un en comprend la raison ? Merci pour votre intérêt. 
|
|
|
|
mardi 9 novembre 2004 à 12:13:55 |
Re : Virgule ou point?

sbaguz
|
Réponse acceptée !
Gobillot a enfin trouvé la solution! Elle est très simple et elle fonctionne parfaitement, voilà : Dim Separateur As String Dim Lettre As String Dim Chiffre As Single ' en VB on a toujours le point quand c'est du numérique Chiffre = 1.1 ' en String ça dépend du système Lettre = Chiffre Separateur = Mid$(Chiffre, 2, 1) MsgBox Separateur Merci. 
|
|
|
|
mardi 9 novembre 2004 à 15:31:51 |
Re : Virgule ou point?

Gobillot
|
quelques exemples:
Dim a As String Dim x As Single
If IsNumeric(a) Then MsgBox "oui" x = a: MsgBox "x= " & x Else MsgBox "non" End If MsgBox "val= " & Val(a)
résultats:
- si le signe décimal est la virgule - et le séparateur des milliers est l'espace a = "1 234,567" --> oui val = 1234 x=1234,567 a = "1 234.567" --> non val = 1234,567 a = "1.234,567" --> non val = 1,234 a = "1,234.567" --> non val = 1
- si le signe décimal est la virgule - et le séparateur des milliers est le point a = "1 234,567" --> non val = 1234 a = "1 234.567" --> non val = 1234,567 a = "1.234,567" --> oui val = 1,234 x=1234,567 a = "1,234.567" --> oui val = 1 x=1,234567
- si le signe décimal est le point - et le séparateur des milliers est la virgule a = "1 234,567" --> non val = 1234 a = "1 234.567" --> non val = 1234.567 a = "1.234,567" --> oui val = 1.234 x=1.234567 a = "1,234.567" --> oui val = 1 x=1234.567
conclusions: -Val(a) donne toujours la même valeur, ne prends en compte que le point et l'espace, mais c'est pas forcément le bon résultat. -il peut avoir confusion avec le signe décimal et le séparateur des milliers.
|
|
|
Cette discussion est classé dans : logiciel, virgule, calcul
Répondre à ce message
Sujets en rapport avec ce message
bleme de calcul de chrigffre apre sla virgule [ par Laulaut ]
j'ai un gros probleme de calcul si quelqu'un peut m'aide urgence ce serais coolvoila j'ai 3 boite de text et je fais un chiffre dans la premier et un
Calcul de chiffres à virgule [ par WareG ]
Je doit calculer des sommes à virgule, mais le probleme est le suivant, lorsque je fais la somme par le code suivant j'ai un nombre à virgule beaucoup
calcul a virgule [ par WareG ]
J'ai bien reç votre code pour le calcul de chiffre à virguleDim Var1, Var2 As SingleVar1 = Text1.TextVar2 = Text2.TextText2.Text = (Int((Var1 + Var2)
access 97 petit logiciel de calcul [ par yessongs ]
bonjour je suis neophyteje souhaiterais a partir d un formulaire ouvrir un petit logiciel de calcul .en cliquant sur un bouton j ouvre une fenetre de
erreur de calcul dans le logiciel: compte est bon [ par ocx ]
salut tous le mondej'ai trouvé une erreur de calcul importante dans le logiciel:compte est bonque j'ai telechargé à vbfrancevoici la demonstrationle c
Probleme avec virgule dans calcul [ par foliop ]
Salut :)voila je fais une multiplication qui saffiche ensuite dans un captio ndonc ca fait :Label.caption = Label1.Caption * 1.5jusque la cest coolseu
Remplacement en direct du . par , [ par gbawar ]
Bonjour, Je suis entrain de faire un programme de calcul, mais j'ai un léger probléme pour un certain types d'entré.Je veux rentrer un chiffre ou un n
Calcul avec virgule [ par Sinsitrus ]
Bonjour a tous et bonne année 2008J'ai besoin d'aide svp. J'ai besoin de faire un calcul dans un textbox mais qui prendras en compte les virgules, com
Calcul dans un textbox [ par Sinsitrus ]
Salut !Je voudrais pouvoir convertir le contenue du textbox T_MontantF avec des chiffres a virgule.Si je met dans le T_MontantF </
surveiller la fermeture d'une application [ par biker45 ]
Bonjour, Mon programme lance un petit logiciel de retouche photo (nommé ImageJ). J'ai pu programmer ce petit logiciel pour qu'il effectue automatiquem
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|