Remplacer un virgule par un point [Résolu]

320C 99 Messages postés dimanche 24 avril 2011Date d'inscription 15 janvier 2014 Dernière intervention - 9 janv. 2013 à 11:36 - Dernière réponse :  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
Afficher la suite 

Votre réponse

12 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 9 janv. 2013 à 11:48
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 9 janv. 2013 à 12:48
+3
Utile
Bonjour,

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

Amicalement,
Us.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de us_30
320C 99 Messages postés dimanche 24 avril 2011Date d'inscription 15 janvier 2014 Dernière intervention - 9 janv. 2013 à 13:07
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de 320C
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 10 janv. 2013 à 15:08
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_ShayW
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 9 janv. 2013 à 15:12
0
Utile
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
Commenter la réponse de cs_ShayW
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 9 janv. 2013 à 15:17
0
Utile
faute de frappe dans le code

au lieu de
verife = True

plutot
  Verifie True True
Commenter la réponse de cs_ShayW
320C 99 Messages postés dimanche 24 avril 2011Date d'inscription 15 janvier 2014 Dernière intervention - 10 janv. 2013 à 12:20
0
Utile
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
Commenter la réponse de 320C
320C 99 Messages postés dimanche 24 avril 2011Date d'inscription 15 janvier 2014 Dernière intervention - 11 janv. 2013 à 12:05
0
Utile
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
Commenter la réponse de 320C
320C 99 Messages postés dimanche 24 avril 2011Date d'inscription 15 janvier 2014 Dernière intervention - 11 janv. 2013 à 12:10
0
Utile
Mais la function c'est mieux en public
sur tout le coup ! OK


Théom@f
Commenter la réponse de 320C
Utilisateur anonyme - 11 janv. 2013 à 12:21
0
Utile
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
Commenter la réponse de Utilisateur anonyme
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 11 janv. 2013 à 13:08
0
Utile
Bonjour Banana32

c'est en vb6
Commenter la réponse de cs_ShayW
Utilisateur anonyme - 11 janv. 2013 à 23:19
0
Utile
c'est en vb6

Oui, ça confirme ce que j'ai dit à mon patron aujourd'hui, j'ai besoin de vacances
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.