Remplacer un virgule par un point [Résolu]

Messages postés
99
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
- - 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 

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
7
3
Merci
Bonjour,

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

Amicalement,
Us.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de us_30
Messages postés
99
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 320C
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
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
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
faute de frappe dans le code

au lieu de
verife = True

plutot
  Verifie True True
Commenter la réponse de cs_ShayW
Messages postés
99
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
0
Merci
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
Messages postés
99
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
0
Merci
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
Messages postés
99
Date d'inscription
dimanche 24 avril 2011
Statut
Membre
Dernière intervention
15 janvier 2014
0
Merci
Mais la function c'est mieux en public
sur tout le coup ! OK


Théom@f
Commenter la réponse de 320C
0
Merci
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
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
Bonjour Banana32

c'est en vb6
Commenter la réponse de cs_ShayW
0
Merci
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