Remplacer un virgule par un point

Résolu
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014 - 9 janv. 2013 à 11:36
 Utilisateur anonyme - 11 janv. 2013 à 23:19
Salut à tous !

J'ai un problème avec l'application que je conçois sous VB 6.0
j'aimerai bien faire de calcul entre textbox, mais si le nombre entré contient un virgule le calcul ne donne pas la bonne réponse càd que il ignore la partie après la virgule

Ma question est celle ci :

Ainsi, est bien possible d'avoir un code qui remplace le virgule par de point ?

Merci pour l'aide !

Théom@f

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2013 à 11:48
Bonjour,
utilise par exemple Cdbl(text1.text) (mais uniquement si le point n'a pas été utilisé).
Le plus simple est peut-être encore d'interdire (au Keypress) la saisie de la virgule. Ce sujet a été traité un nombre si considérable de fois que je ne doute pas une seconde que le moteur de recherches de ce forum (si, si, il y en a un) te conduira à une infinité de discussions à ce propos.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
9 janv. 2013 à 12:48
Bonjour,

Recherches vers la fonction "REPLACE" ou "CDBL" (comme dit) selon le besoin.

Amicalement,
Us.
3
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014
9 janv. 2013 à 13:07
Merci à tous pour l'aide !

il y a aussi ce lien qui permet de palié au problème
ce vraiment super !

Encore merci !


Théom@f
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 janv. 2013 à 15:08
Salut

ton code ne réagit pas à mon application


il faut voir comment tu l'as utilisé

j'ai un peu modifié

private Function Verifie(contenu As TextBox) As Boolean
'la fonction reçoit un textbox comme parametre 
'et verifie si le textbox.text est numérique 
'et modifie le séparateur décimal selon le 'séparateur definit par le p.c
Dim sDecimalSeparator As String
sDecimalSeparator = Mid$(CStr(1 / 2), 1, 1)

If Not IsNumeric(contenu.text) Then
   Verifie = False
    Exit Function
End If

If InStr(1, CStr(contenu.text), ".") Then
   If sDecimalSeparator = "," Then
    contenu.text = Replace(contenu.text, ".", ",")
     Verifie = True
     Exit Function
   End If
     Verifie = True
      Exit Function
End If
  
If InStr(1, contenu.text, ",") Then
   If sDecimalSeparator = "." Then
       contenu.text = Replace(contenu.text, ",", ".")
         Verifie = True
          Exit Function
    End If
     Verifie = True
      Exit Function
End If
 
 Verifie = True
 
End Function


pour faire les calculs entre deux textboxs
text1 et text2
If Verifie(Text1) And Verifie(Text2) Then
 Dim prod,add As Double
prod = CDbl(Text1.text) * CDbl(Text2.text)
add = CDbl(Text1.text) + CDbl(Text2.text)
End If
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 janv. 2013 à 15:12
Bonjour

le problème n'est pas seulement de remplacer
la , par .
mais d'analyser le contenu de ta texbox
peut etre ainsi

Private Function Verifie(ByRef contenu As String) As Boolean
Dim sDecimalSeparator As String
sDecimalSeparator = Mid$(CStr(1 / 2), 1, 1)

If Not IsNumeric(contenu) Then
   Verifie = False
    Exit Function
End If

If InStr(1, CStr(contenu), ".") Then
   If sDecimalSeparator = "," Then
     contenu = Replace(contenu, ".", ",")
     Verifie = True
     Exit Function
   End If
     Verifie = True
      Exit Function
End If
  
If InStr(1, contenu, ",") Then
   If sDecimalSeparator = "." Then
        contenu = Replace(contenu, ",", ".")
         verife = True
          Exit Function
    End If
     Verifie = True
      Exit Function
End If
 
 Verifie = True
 
        
End Function


pour utiliser
Dim t As String

t = Text1.Text
If Verifie(t) Then
 Dim x As Double
 x = CDbl(t) + 5
End If
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 janv. 2013 à 15:17
faute de frappe dans le code

au lieu de
verife = True

plutot
  Verifie True True
0
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014
10 janv. 2013 à 12:20
Salut ShayW,
ton code ne réagit pas à mon application
j'ai eu à l'essayé mais rien ne se passe !



Je m'y mettre peu après et je te donnerais la suite ,
Merci !

Théom@f
0
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014
11 janv. 2013 à 12:05
Ok ! ShayW, Super en fait c mieux malgès que ce long

Je fais comme t'a écris, je déclarer la fonction en privé e tmis le code dans change ...
Et le tour est joué

Merci !
Théom@f
0
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014
11 janv. 2013 à 12:10
Mais la function c'est mieux en public
sur tout le coup ! OK


Théom@f
0
Utilisateur anonyme
11 janv. 2013 à 12:21
Bonjour ShayW,

Mid, IsNumeric, CStr, Instr, Replace sont obsolètes.
Utilise SubString, IsNumeric (sur chaîne), ToString, IndexOf, Replace (sur chaîne).

Ensuite :
private Function Verifie(contenu As TextBox) As Boolean
   '...     
   Verifie = True
end function

Utilise plutôt :
Return True
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 janv. 2013 à 13:08
Bonjour Banana32

c'est en vb6
0
Utilisateur anonyme
11 janv. 2013 à 23:19
c'est en vb6

Oui, ça confirme ce que j'ai dit à mon patron aujourd'hui, j'ai besoin de vacances
0
Rejoignez-nous