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 :

Problème de calculer avec textbox et produire un single ou double ?


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 35
    Points
    35
    Par défaut Problème de calculer avec textbox et produire un single ou double ?
    salut à tous.
    j'utilise une feuille avec objet ADO dans laquelle j'ai mis des textbox. j'essaie de calculer un montant avec, mais le résultat ne se fait qu'en integer, bien que j'ai utilisé CStr. Par exemple:
    textBox3.Text = CStr(CSng(textBox1.Text) * CSng(textBox2.Text)
    mais j'obtiens pas de virgule.
    Pouvez vous m'aider. et merci.

  2. #2
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Bonsoir et bienvenu dans le forum.

    Et si tu essayais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox3.Text = CDec(textBox1.Text) * CDec(textBox2.Text)
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 35
    Points
    35
    Par défaut Partiellement Résolu.
    merci SOVO.
    ça provoque les mêmes erreurs que CDbl ou CSng.
    mais j'ai trouvé que mon problème était que dans ma configuration système, j'avais la virgule "," comme symbôle décximal et je l'ai changé en point ".", et maintenant ça marche.
    mais j'aimerais toujours avoir des chifres décimaux en virgule plutôt qu'en point, ce sera plus lisible.

  4. #4
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    tu pourais tout simplement utliser la fonction replace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox3.Text = replace(textBox3.Text, ".", ",")
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Ou encore...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim nbrDecimal As Double
    nbrDecimal = Val(Replace(Text1.Text, ",", "."))

  6. #6
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Une petite fonction à mettre dans un coin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    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 GetUserDefaultLCID Lib "kernel32" () As Long
    Private Const LOCALE_STHOUSAND = &HF       'séparateur des milliers
    Private Const LOCALE_SDECIMAL = &HE        'séparateur décimal
     
     
    Private Function CVal(nbretxt As String) As Double
    '-- Convertie une chaine en Double, indépendament des paramètres régionaux
     
    Dim lngResultat As Long
    Dim buffer As String
    Dim SepDec As String, SepMil As String
    Dim loc As Long
     
        'récupère l'identifiant de l'information locale de type utilisateur
        On Error GoTo CVal_Error
     
        loc = GetUserDefaultLCID()
     
        'Récupère le séparateur décimal
        lngResultat = GetLocaleInfo(loc, LOCALE_SDECIMAL, buffer, 0)
        buffer = String(lngResultat, 0)
        GetLocaleInfo loc, LOCALE_SDECIMAL, buffer, lngResultat
        SepDec = Left(buffer, 1)
     
        'Récupère le séparateur des Milliers
        lngResultat = GetLocaleInfo(loc, LOCALE_STHOUSAND, buffer, 0)
        buffer = String(lngResultat, 0)
        GetLocaleInfo loc, LOCALE_STHOUSAND, buffer, lngResultat
        SepMil = Left(buffer, 1)
     
        'Effectue le remplacement
        nbretxt = Replace(nbretxt, SepMil, "")
        nbretxt = Replace(nbretxt, SepDec, ".")
     
        CVal = Val(nbretxt)
     
        On Error GoTo 0
        Exit Function
     
    CVal_Error:
        Err.Clear
        CVal = 0
    End Function
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Super! J'la mets au frais!

    Dis donc Thierry, sovo et moi, on a l'air de deux amateurs de ping-pong essayant de se mesurer à un champion de tennis!

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par zazaraignée
    Dis donc Thierry, sovo et moi, on a l'air de deux amateurs de ping-pong essayant de se mesurer à un champion de tennis!
    Meuh nan
    J'avais ça dans un coin, car j'en avais assez des Replace et consors en fonction de la langue de l'OS et des paramètres régionaux , alors je vous en fait profiter
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  9. #9
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par zazaraignée
    Super! J'la mets au frais!

    Dis donc Thierry, sovo et moi, on a l'air de deux amateurs de ping-pong essayant de se mesurer à un champion de tennis!
    Je suis d'accord avec toi, dire que je me suis fait c**** à monter un système bancal pour résoudre ce problème, j'enrage de ne pas avoir trouvé cette solution simplissime.

    Thierry

    +

    Théo qui va de ce pas mettre le code de côté.
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Perso, j'utiises un petit module dans le quel je redéfinis la fonction val

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function Val(Nombre as variant) as Double
       Dim strTemp as String
       strTemp = Nombre
       strTemp = Replace(Nombre, "," , ".")
       Val = VBA.Val(strTemp)
    End Function
    Comme çà, je n'ai plus a m'occuper dans reglagles de chaque poste.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Et y'a pas de conflits entre la fonction Val de VB et la tienne? (C'est ma soirée des questions de conflits)

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Delbeke
    Perso, j'utiises un petit module dans le quel je redéfinis la fonction val

    Comme çà, je n'ai plus a m'occuper dans reglagles de chaque poste.
    Je suis tombé sur un poste client qui utilisait ' comme séparateur de milliers et ça m'avait mis en rogne, rien ne marchait
    D'ou, à l'époque, ma fonction CVal (par analogie aux fonctions de conversion), un coup de rechercher/remplacer et depuis je n'utilisise plus jamais le Val de VB
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  13. #13
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Citation Envoyé par zazaraignée
    Et y'a pas de conflits entre la fonction Val de VB et la tienne? (C'est ma soirée des questions de conflits)
    Nan, pas de probleme de conflit, j'ai utilisé plusieurs fois cette technique pour redefinir des fonctions vb . dans le reste du code on peut toujours utiliser l'ancienne version en mettant VBA. devant la fonction
    Ex:
    Mavaleur = Val(strValue) utilse la fonction redéfinie
    Mavaleur = VBA.Val(strValue) utilise la fonction standard
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Points : 35
    Points
    35
    Par défaut Résolu.
    Merci à vous tous pour toutes vos explications, parce que ça marche pour moi. salut.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Condition de Calcul avec textbox
    Par jonathanoudelet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/08/2008, 11h23
  2. Problème de calcul avec arrondis
    Par Flaguette dans le forum Access
    Réponses: 5
    Dernier message: 23/05/2008, 23h00
  3. XSL problème de calcul avec décimales
    Par jejelafrite dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/07/2007, 21h53
  4. Problème de calcul avec les float
    Par Oberown dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/05/2006, 09h28
  5. Problème de calcul avec les heures
    Par smotte76 dans le forum Access
    Réponses: 12
    Dernier message: 28/04/2006, 20h21

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