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.NET Discussion :

comparer 3 textbox et afficher une erreur [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 75
    Par défaut comparer 3 textbox et afficher une erreur
    Bonjour, je me lance dans le VB.net et j'ai créé un petit logiciel tout simple pour débuter
    J'ai 3 textbox, (TXT_A, TXT_B, TXT_C) et je souhaiterais les comparer, afin que si B>A, ou si C>A, ou si C>B, une erreur s'affiche j'ai tenté ce code:
    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
    Function essai() As Boolean
            Dim sup As Boolean = True
     
     
            If Me.TXT_B.Text > Me.TXT_A.Text Then
                sup = False
            End If
            If Me.TXT_C.Text > Me.TXT_A.Text Then
                sup = False
            End If
            If Me.TXT_C.Text > Me.TXT_B.Text Then
                sup = False
            End If
            If sup = False Then
                MsgBox("Les valeurs entrées doivent être de cette manière avec a > b > c", vbExclamation)
            End If
            Return sup
        End Function
    malheureusement ça ne fonctionne pas

    là où je comprends pas, c'est que j'ai une autre fonction qui vérifie si les textbox ont bien une valeur, et si elles sont bien numérique:
    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
     Function Verification() As Boolean
            Dim ok As Boolean = True
            If Me.TXT_A.Text Is Nothing Or Not IsNumeric(Me.TXT_A.Text) Then
                ok = False
            End If
            If Me.TXT_B.Text Is Nothing Or Not IsNumeric(Me.TXT_B.Text) Then
                ok = False
            End If
            If Me.TXT_C.Text Is Nothing Or Not IsNumeric(Me.TXT_C.Text) Then
                ok = False
            End If
            If ok = False Then
                MsgBox("Veuillez entrer des valeurs numériques", vbExclamation)
            End If
            Return ok
        End Function
    Et celle-ci fonctionne parfaitement...........

    Quelqu'un peut m'aider svp? merci par avance


    Ps: je met le code de mon programme en entier
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Public Class Form1
     
        Private Sub BT_CALCUL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_CALCUL.Click
            Dim aire = Calcul(Me.TXT_A.Text, Me.TXT_B.Text, Me.TXT_C.Text)
     
            If Verification() Then
                Me.LBL_AIRE.Text = "La surface du triangle est d'environ " & aire & " m²"
            Else
                Me.LBL_ERR.Visible = True
            End If
        End Sub
     
        Function essai() As Boolean
            Dim sup As Boolean = True
     
     
            If Me.TXT_A.Text < Me.TXT_B.Text Then
                sup = False
            End If
            If Me.TXT_C.Text > Me.TXT_A.Text Then
                sup = False
            End If
            If Me.TXT_C.Text > Me.TXT_B.Text Then
                sup = False
            End If
            If sup = False Then
                MsgBox("Les valeurs entrées doivent être de cette manière avec a > b > c", vbExclamation)
            End If
            Return sup
        End Function
     
        Function Verification() As Boolean
            Dim ok As Boolean = True
            If Me.TXT_A.Text Is Nothing Or Not IsNumeric(Me.TXT_A.Text) Then
                ok = False
            End If
            If Me.TXT_B.Text Is Nothing Or Not IsNumeric(Me.TXT_B.Text) Then
                ok = False
            End If
            If Me.TXT_C.Text Is Nothing Or Not IsNumeric(Me.TXT_C.Text) Then
                ok = False
            End If
            If ok = False Then
                MsgBox("Veuillez entrer des valeurs numériques", vbExclamation)
            End If
            Return ok
        End Function
     
        Function Calcul(ByVal A As Double, ByVal B As Double, ByVal C As Double) As Double
            Dim Aire As Double
     
            Aire = (1 / 4 * Math.Sqrt((A + (B + C)) * (C - (A - B)) * (C + (A - B)) * (A + (B - C))))
     
            Return Aire
        End Function
     
        Private Sub BT_QUITTER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_QUITTER.Click
            End
        End Sub
     
        Private Sub BT_EFFACER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_EFFACER.Click
            For Each txt As Control In Me.Controls
                If TypeOf txt Is TextBox Then
                    CType(txt, TextBox).Text = ""
                End If
            Next
        End Sub
     
    End Class

  2. #2
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Salut!

    Ca semble fonctionner de cette façon!

    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
     
    Function essai() As Boolean
            Dim sup As Boolean = True
            If txt_a.Text < txt_b.Text AndAlso txt_b.Text < txt_c.Text Then
                MsgBox("Les valeurs entrées doivent être de cette manière avec a > b > c", vbExclamation)
                sup = False
            End If
            Return sup
        End Function
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            If Verification() AndAlso essai() Then
                TextBox1.Text = "LA surface du triangle est d'environ " & Calcul(txt_a.Text, txt_b.Text, txt_c.Text)
            End If
        End Sub
     
        Function Verification() As Boolean
     
            If String.IsNullOrWhiteSpace(txt_a.Text) OrElse Not IsNumeric(Me.txt_a.Text) _
                OrElse String.IsNullOrWhiteSpace(txt_b.Text) OrElse Not IsNumeric(Me.txt_b.Text) _
                OrElse String.IsNullOrWhiteSpace(txt_c.Text) OrElse Not IsNumeric(Me.txt_c.Text) Then
                MsgBox("Veuillez entrer des valeurs numériques", vbExclamation)
                Return False
            Else
                Return True
            End If
        End Function
     
        Function Calcul(ByVal A As Double, ByVal B As Double, ByVal C As Double) As Double
            Dim Aire As Double
     
            Aire = (1 / 4 * Math.Sqrt((A + (B + C)) * (C - (A - B)) * (C + (A - B)) * (A + (B - C))))
     
            Return Aire
        End Function
    Les opérateurs AndAlso et OrElse permettent d'ignorer les comparaisons ou expressions suivantes en fonctions du résultats des comparaison ou expressions précédentes. Ce sont des opérations logiques court-circuitante.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Pour comparer des valeurs numériques il faut transformer les valeurs textes de tes TextBox en nombre

    Exemple avec des nombres entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Function essai() As Boolean
            Return Not ((Int32.Parse(txt_a.Text) > Int32.Parse(txt_b.Text)) And (Int32.Parse(txt_b.Text) > Int32.Parse(txt_c.Text)))
        End Function

    Note : dans ta formule la partie (C - (A - B)) peut-être négative ce qui provoquera un problème dans ta racine carrée.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    J'ai repris ton prog. pour que tu ais un exemple

    Je n'ai pas corrigé le problème du calcul.

    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
        Private Function essai() As Boolean
            Return Not ((Double.Parse(txt_a.Text) > Double.Parse(txt_b.Text)) And (Double.Parse(txt_b.Text) > Double.Parse(txt_c.Text)))
        End Function
     
        Private Function Numerique() As Boolean
            Return (IsNumeric(Me.txt_a.Text) And IsNumeric(Me.txt_b.Text) And IsNumeric(Me.txt_c.Text))
        End Function
     
        Private Function Vide() As Boolean
            Return (Me.txt_a.Text Is Nothing Or Me.txt_b.Text Is Nothing Or Me.txt_c.Text Is Nothing)
        End Function
     
        Function Verification() As Boolean
            If (Vide() Or Not Numerique()) Then
                MsgBox("Veuillez entrer des valeurs numériques", vbExclamation)
                Return False
            End If
     
            If essai() Then
                MsgBox("Les valeurs entrées doivent être de cette manière avec a > b > c", vbExclamation)
                Return False
            End If
     
            Return True
     
        End Function
     
        Function Calcul(ByVal A As Double, ByVal B As Double, ByVal C As Double) As Double
            Return (1 / 4 * Math.Sqrt((A + (B + C)) * (C - (A - B)) * (C + (A - B)) * (A + (B - C))))
        End Function
     
        Private Sub BT_CALCUL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_CALCUL.Click
            If Verification() Then
                Me.LBL_AIRE.Text = "La surface du triangle est d'environ " & Calcul(Double.Parse(txt_a.Text), Double.Parse(txt_b.Text), Double.Parse(txt_c.Text)).ToString & " m²"
            Else
                Me.LBL_ERR.Visible = True
            End If
        End Sub
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 75
    Par défaut
    Merci à tout les deux.
    j'ai essayé la méthode de Saintelaitlait, qui fonctionne très bien
    Mais je vais aussi tester celle de rv26t, pour voir la différence

    Par contre rv26t,a quoi correspond parse stp? vu que je débute, j'ai un peu de mal

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 194
    Par défaut
    http://fr.wiktionary.org/wiki/parser

    parser veut dire transformer un string en quelque chose en l'analysant

    double.parse transforme le string en double, il y en a plein d'autres integer.parse, date.parse etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 75
    Par défaut
    Merci pour ton explication Pol63
    J'ai une autre petite question, j'abuse un peu lol

    Pour le calcul de l'aire, mon résultat affiche une dizaine de chiffre après la virgule, et j'aimerais en avoir que 2 après.
    Ca doit être tout c*n, mais j'y arrive pas.

    Encore merci pour votre patience

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 75
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Note : dans ta formule la partie (C - (A - B)) peut-être négative ce qui provoquera un problème dans ta racine carrée.
    j'ai rajouté math.abs pour que le valeur ne soit jamais négative

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 194
    Par défaut
    math.round
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 75
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    math.round
    ca marche nickel.encore merci je vais passé le sujet en résolu

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

Discussions similaires

  1. Affiche une erreur de script alors qu'il n'y en a pas
    Par Mustang67 dans le forum Flash
    Réponses: 1
    Dernier message: 11/12/2008, 20h06
  2. Comment éviter d'afficher une erreur quand table vide
    Par lelapinrusse dans le forum Langage
    Réponses: 6
    Dernier message: 16/05/2008, 19h00
  3. [Système] Afficher une erreur
    Par piour dans le forum Langage
    Réponses: 19
    Dernier message: 05/11/2007, 15h35
  4. Réponses: 15
    Dernier message: 13/10/2007, 11h39
  5. [MySQL] Afficher une erreur si un champ est rempli
    Par kevinf dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/11/2006, 20h09

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