IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Ma textbox n'accepte pas les virgules ..


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut Ma textbox n'accepte pas les virgules ..
    Bonjour,
    Je suis toujours sur ma petite appli de calcul et quelque chose m'echappe :
    - je dois rentrer 2 valeurs dans 2 textbox 1 et 2.
    - Une troisieme textbox fait la moyenne des 2 valeurs.

    Mon calcul fonctionne si je rentre des valeurs entieres et decimales en entrant des . (ex : 42.4 et 46.8) mais si je rentre des virgules à la place des ., il ne prend pas en compte le caractère (ex : 42,2 et 45,4; il fait la moyenne de 43 et 45)

    comment faire pour que les virgules soient acceptées ?????

    merci
      0  0

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut

    Comment gères tu les entrées utilisateur dans tes TextBoxs.
    Quelle formule utilises tu pour le calcul.
    Peux tu nous montrer le code que tu utilises actuellement.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
      0  0

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    je posterai des que possible ce que tu demandes, je ne suis pas au boulot la, neanmoins, en simplifiant,
    - j'ai mis la longueur max de la valeur a 6
    - Mon format est de type nombre avec 3 decimales
    et ceci dans les 3 texbox.

    Ensuite, c'est vraiment du basique dans le genre, de tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Texta.Texte = (Val (texteb.texte) + Val (textec.texte)) / 2
    de même, dans une autre textbox qui doit simplement additionner textea et Textb, impossible d'additionner les nombres décimaux. J'ai pourtant mis exactement les mêmes paramètres que les 3 précédantes, donc au moins vec des . cela devrait marcher la, (j'ai par exemple : 4.125 + 3 = 7)
      0  0

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    En considérant que les TextBoxs renvoie un String, j'ai fait exprès de déclarer les variables Nbr1 et Nbr2 en String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Nbr1 As String, Nbr2 As String
    Nbr1 = "4.12552789"
    Nbr2 = "3"
    Nbr1 = Replace(Nbr1, ".", ",")
    MsgBox Round((CSng(Nbr1) + CSng(Nbr2)), 3)
    Peut être que cette contribution t'intéressera [Trucs & Astuces] Forcer les touches clavier en numérique elle décrit une façon de gère les problèmes de virgule et point.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
      0  0

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    En plus, attention à ceci

    De Progelec

    En considérant que les TextBoxs renvoie un String, j'ai fait exprès de déclarer les variables Nbr1 et Nbr2 en String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Nbr1 = "42,4"
    Nbr2= "46,8"
    
    Val(Nbr1) donneras comme valeur 42
    val(Nbr2) donneras comme valeur 44
    
    donc tu dois faire, avant tes calculs
    
    Nbr1 = replace(Nbr1,",",".")
    Val(Nbr1) donneras comme valeur 42.4
    Le séparateur de décimales doit être un point
    (car microsoft étant E.U la virgule n'est pas reconnue comme séparateur de décimales)
      0  0

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    merci pour ces explications, cela fonctionne impeccable.
    J'ai maintenant un petit souci qui m'agace et je ne comprends absolument pas pourquoi j'ai ce problème.

    1 Textbox A (Dataformat : nombre 2 decimales - Maxlenght 5) : Je peux donc entrer un nombre style -2.36

    1 Textbox B (Dataformat : nombre 2 decimales - Maxlenght 5) : Je peux donc entrer un nombre style -2,25


    1 Textbox C (Dataformat : nombre 2 decimales - Maxlenght 5) : Je veux que TextBox C me fasse le calcul TextboxA - TextboxB ce qui devrait me donner : -0.11.

    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextC.Text = (Val(TextA.Text) - Val(TextB.Text)
    pourtant mon resultat est 0.36

    Que se passe t'il ??

    PS : en fait,j'ai l'impression que c'est encore une histoire de points et de virgule car ma texbox B me donne un resultat (car elle est fonction d'un r esultat) numérique décimal mais avec une virgule alors que ma TextBox A me le donne avec uniquement des points.

    Je voudrais donc faire en sorte (ne ralez pas .....) que mes valeurs décimales calculéesle soient avec un point et non une virgule
      0  0

  7. #7
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    J'aurai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextC.Text = Format$(Val(TextA.Text) - Val(TextB.Text))
    Tu peux utiliser, pour le débuggage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S$ = Format$(Val(TextA.Text) - Val(TextB.Text))
    TextC.Text = S$
    Tu mets un point d'arrêt sur la deuxiéme ligne, et avec le débuggeur tu regardes le contenu de S$ , TextA.Text et TextB.Text
      0  0

  8. #8
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    toujours pareil,, la formule porposee ne fonctionne pas mieux que celle que j'avais mis. En fait, il semble ignorer les chiffres qui sont après une virgule

    pour lui : -2.36 - (-2,36) n'est pas egal a 0 mais à -2.36 - (-2) = 0.36
      0  0

  9. #9
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    et avec le débuggeur tu regardes le contenu de S$ , TextA.Text et TextB.Text
    et tu as quoi dans les variables ?

    TextA.Text et TextB.Text ne doivent pas contenir de virgule "," mais des points "."
      0  0

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    alors les variables qui contiennent des virgules sont des Textbox issues d'un calcul style

    variable a = 5
    variable b = Sqr(Val(Text50.Text)

    le probleme est que TexboxB me retourne 2,23 et non 2.23
    aucune valeur entree a la main ne contient de virgule, ce sont les valeurs calculées et c'est bien ce qui m'embête

    autre exemple :
    A1 = 42
    A2 = 43
    A3, moyenne de A1 et A2 = 42,5 et non 42.5

    la formule utilisée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextA3.Text = (Val(TextA1.Text) + Val(TextA2.Text)) / 2
    et c'est tout, je n'ai rien fait d'autre

    P
      0  0

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    regarde et adapte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a1 = 42
    a2 = 45
    Text1.Text = Str((a1 + a2) / 2)
      0  0

  12. #12
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    Oui mais attention, a1 et a2 sont des valeurs entrées elles donc qui varient a chaque saisie

    autant pour moi, je suis un âne ...... ca fonctionne a priori .... je finis d'autres tests ..... et je reviens lundi
      0  0

  13. #13
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    N1$ = replace(TextA1.Text,",",".")
    N2$ = replace(TextA2.Text,",",".")
    TextA3.Text = Format$(Val(N1$) + Val(N2$))
      0  0

  14. #14
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    Bon alors ca ne marche pas pour ce genre de calculs (polynômes) ou B,C,D,E,F et J sont des nombres entrés a la main de la forme allant de -80.00 à +80.00

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    J = ((B* (C* C* C)) + (D* (C* C)) + (E* C) + F)
    mon resultat devant se mettre sous la forme xxx.yy (ex : 5.25)
    je suis nul en declaration en ce qui concerne les caracteres ceci explique peut être cela
      0  0

  15. #15
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Utilise mon programme #13
    Format$ te permet de spécifier le nombre de chiffre après la vigule
      0  0

  16. #16
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Salut à tous;
    Eh bien le problème se situe au niveau de l'utilisation de la fonction Val. Si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox Val(3.21) ' ou
    MsgBox Val("3,21")
    le résultat retourné est 3.
    Un seul cas où le résultat est correct: qui retourne bien 3,21
    Puisque tu as paramétré les TextBox pour accepter les nombres, tu n'as pas besoin d'utiliser la fonction Val.

    Supprime alors toute fonction Val et le tout rentre dans l'ordre.
    Tu n'as pas besoin d'utiliser Replace si tu veux que l'affichage utilise une virgule à la place du point.
    Si tu as besoin d'un nombre bien déterminé de chiffres après la virgule, il te suffira d'utiliser la fonction Format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextC.Text=Format(TextC.text,"###.00")
    Dans ce dernier code, tu dois utiliser le point dans le format sinon, le résultat sera tronqué.

    Important: Pour la saisie des nombres, il est plus aisé d'utiliser le pavé numérique que d'utiliser les autres touches et en particulier pour la virgule. Pour ce faire, utilise l'évènement KeyPress pour les 2 TextBox de saisie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Text1_KeyPress(KeyAscii As Integer)
       If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
    End Sub
    Private Sub Text2_KeyPress(KeyAscii As Integer)
       If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
    End Sub
    et cela remplace le point par la virgule pendant la saisie.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
      0  0

  17. #17
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Et en plus regarde et essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
       Dim calc As Currency
       Dim param1 As String, param2 As String
       Dim nomb As String
       Dim TextA3 As String
     
     
     param1 = "17,126"
     param2 = "2,362"
     param1 = Format(param1, "###.00") 'renvoie comme valeur 17,13
     param2 = Format(param2, "###.00") ''renvoie comme valeur  2,36
     calc = CCur(param1) + CCur(param2)  ''renvoie comme valeur  19,49
     nomb = Str(calc) 'renvoie comme valeur 19.49
     TextA3 = CStr(calc) 'renvoie comme valeur  19,49
      0  0

  18. #18
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Il y a peut-être plus simple encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Text3.Text = CDbl(Text1.Text) + CDbl(Text2.Text)
    ' ou encore avec CSng ou CCur
    Text3.Text = CSng(Text1.Text) + CSng(Text2.Text)
    qui marche sans problème.(sans oublier le formatage de la sortie)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
      0  0

  19. #19
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Message N°4 pourtant on en est au 19ème.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
      0  0

  20. #20
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour l_autodidacte,

    Et même en une fois avec le formatage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Text3.text = Format(CCur(Text1.text) + CCur(Text2.text), "###.00")
    ' ou encore avec CSng ou CDbl
    A+
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Textbox n'accepte pas les nombres
    Par Bouillou35 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/11/2014, 09h18
  2. [VBA] Mon code n'accepte pas les virgules.
    Par kubuntu_user dans le forum Général VBA
    Réponses: 3
    Dernier message: 29/12/2009, 11h27
  3. n'accepte pas les apostrophes
    Par flo456 dans le forum Langage
    Réponses: 6
    Dernier message: 18/09/2006, 14h14
  4. La fonction BuilCriteria n'accepte pas les points
    Par Tofalu dans le forum Access
    Réponses: 3
    Dernier message: 10/07/2006, 12h00
  5. Select dans SQL n'accepte pas la virgule
    Par da_latifa dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/10/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo