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 :

Comparaison de deux valeurs numériques ne fonctionnant pas


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Comparaison de deux valeurs numériques ne fonctionnant pas
    Bonjour tout le monde,

    Je compare deux valeurs numériques :

    If Val(textMontantInsere.Text) < Val(textMontantDu.Text) Then

    textMontantInsere.Text => 0,05
    textMontantDu.Text => 0,50 €
    il dit en fait que ce n'est pas vrai et il va dans le else :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Val(textMontantInsere.Text) < Val(textMontantDu.Text) Then
            Else
                commandAcheterBoisson.Enabled = True
            End If
    il active donc le bouton alors que tant que la somme insérée est inférieure à la somme dûe, le bouton ne devrait pas apparaître.

    Dans la fenêtre d'exécution, quand je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?Val(textMontantInsere.Text)
     0 
    ?Val(textMontantDu.Text)
     0
    J'obtiens zéro (0) pour chaque valeur

    Est-ce que val() ne prend pas le premier digit donc 0 pour 0,50 et 0 pour 0,05 ?

    Je ne comprends pas pourquoi le signe € apparaît aussi dans textMontantDu.Text alors que j'utilise val pour trasnformer le text en numérique.

    Merci d'avance pour votre aide et bon Dimanche.

    beegees

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

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 168
    Points
    1 168
    Par défaut
    C'est la virgule qui te coince le "VAL"
    Remplace la virgule par un "."

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    C'est la virgule qui te coince le "VAL"
    Remplace la virgule par un "."
    Salut,

    Merci pour ta réponse qui a résolu mon problème.

    beegees

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

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 168
    Points
    1 168
    Par défaut
    un exemple :
    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
    Private Sub Form_Load()
    textMontantInsere$ = "0,05"
    textMontantDu$ = "0,50 €"
    If ChangeVirgulePoint(textMontantInsere$, textMontantDu$) Then
        Debug.Print " Plus petit"
    Else
        Debug.Print "plus grand"
    End If
    Stop
     
    End Sub
     
    Function ChangeVirgulePoint(S$, SS$)
    I% = InStr(S$, ",")
    S1$ = S$
    If I% > 0 Then Mid$(S1$, I%) = "."
    Debug.Print S1$
    I% = InStr(SS$, ",")
    S2$ = SS$
    If I% > 0 Then Mid(S2$, I%) = "."
    If Val(S1$) < Val(S2$) Then ChangeVirgulePoint = True Else ChangeVirgulePoint = False
    End Function

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    un exemple :
    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
    Private Sub Form_Load()
    textMontantInsere$ = "0,05"
    textMontantDu$ = "0,50 €"
    If ChangeVirgulePoint(textMontantInsere$, textMontantDu$) Then
        Debug.Print " Plus petit"
    Else
        Debug.Print "plus grand"
    End If
    Stop
     
    End Sub
     
    Function ChangeVirgulePoint(S$, SS$)
    I% = InStr(S$, ",")
    S1$ = S$
    If I% > 0 Then Mid$(S1$, I%) = "."
    Debug.Print S1$
    I% = InStr(SS$, ",")
    S2$ = SS$
    If I% > 0 Then Mid(S2$, I%) = "."
    If Val(S1$) < Val(S2$) Then ChangeVirgulePoint = True Else ChangeVirgulePoint = False
    End Function
    Un super grand merci pour ce complément d'information qui va m'être bien utile pour la suite.

    Bon Dimanche et encore merci.

    beegees

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

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 168
    Points
    1 168
    Par défaut
    Un programme un peu plus "propre"
    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
    Private Sub Form_Load()
    textMontantInsere$ = "0,05"
    textMontantDu$ = "0,50 €"
    If ChangeVirgulePoint(textMontantInsere$, textMontantDu$) Then
        Debug.Print " Plus petit"
    Else
        Debug.Print "plus grand"
    End If
    Debug.Print textMontantInsere$, textMontantDu$
    Stop
     
    End Sub
     
    Function ChangeVirgulePoint(ByVal S$, ByVal SS$)
    I% = InStr(S$, ",")
    If I% > 0 Then Mid$(S$, I%) = "."
     
    I% = InStr(SS$, ",")
    If I% > 0 Then Mid(SS$, I%) = "."
     
    If Val(S$) < Val(SS$) Then ChangeVirgulePoint = True Else ChangeVirgulePoint = False
    End Function
    Je ne suis pas un expert en VB6 .... mais je fais des programmes qui marchent !

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    Un programme un peu plus "propre"
    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
    Private Sub Form_Load()
    textMontantInsere$ = "0,05"
    textMontantDu$ = "0,50 €"
    If ChangeVirgulePoint(textMontantInsere$, textMontantDu$) Then
        Debug.Print " Plus petit"
    Else
        Debug.Print "plus grand"
    End If
    Debug.Print textMontantInsere$, textMontantDu$
    Stop
     
    End Sub
     
    Function ChangeVirgulePoint(ByVal S$, ByVal SS$)
    I% = InStr(S$, ",")
    If I% > 0 Then Mid$(S$, I%) = "."
     
    I% = InStr(SS$, ",")
    If I% > 0 Then Mid(SS$, I%) = "."
     
    If Val(S$) < Val(SS$) Then ChangeVirgulePoint = True Else ChangeVirgulePoint = False
    End Function
    Je ne suis pas un expert en VB6 .... mais je fais des programmes qui marchent !
    Merci Daudet78 pour ton dévouement sur ce forum.

    Bon Dimanche.

    beegees

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

Discussions similaires

  1. comparer deux valeurs numériques en jquery
    Par nassing dans le forum jQuery
    Réponses: 5
    Dernier message: 26/08/2011, 13h11
  2. Récuperer valeur precedente Rechdom fonctionne pas
    Par sebing dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 08/04/2011, 23h30
  3. Réponses: 7
    Dernier message: 20/10/2009, 10h12
  4. sortir deux valeurs numériques d'une chaine de caractères
    Par Ness2000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/07/2008, 09h52
  5. Comparaison de deux valeurs.
    Par Mobistar dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 21/03/2007, 16h55

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