Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Simplifier des conditions formulées avec is then

donpopo

XLDnaute Occasionnel
Bonjour le forum,

dans une procédure, je dois tester certaines condition sur 4 textbox.

Les textbox vont deux par deux:
si une des deux est vide et l'autre remplie, alors sortir de la procédure.
Idem pour mes deux autres textbox.

J'ai écrit ce qui suit, mais cela me parait lourd et répétitif.

VB:
    If TextBox202.Value = "" And TextBox200 <> "" Then
        MsgBox "Données erronées"
        Exit Sub
    End If
    If TextBox203.Value = "" And TextBox201 <> "" Then
        MsgBox "Données erronées"
        Exit Sub
    End If
    If TextBox202.Value <> "" And TextBox200 = "" Then
        MsgBox "Données erronées"
        Exit Sub
    End If
    If TextBox203.Value <> "" And TextBox201 = "" Then
        MsgBox "Données erronées"
        Exit Sub
    End If

N'y a t'il pas une méthode plus simple et plus claire que cela ?

Merci d'avance,
donpopo
 

MP59

XLDnaute Occasionnel
Bonjour donpopo,

à tester, il y aura surement mieux.

VB:
If (TextBox202.Value = "" And TextBox200 <> "") Or (TextBox202.Value <> "" And TextBox200 = "") Then
        MsgBox "Données erronées"
        Exit Sub
    End If
    If (TextBox203.Value = "" And TextBox201 <> "") Or (TextBox203.Value <> "" And TextBox201 = "") <> "" Then
        MsgBox "Données erronées"
        Exit Sub
    End If
 

donpopo

XLDnaute Occasionnel
Bonjour, MP59,
Si je comprends bien, les parenthèses changent l'ordre des priorités. J'avais essayé, mais sans parenthèses et cela ne donnait rein de concret.
Merci, je vais tester.
A+
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Si j'ai bien compris
NB: Renseignez les propriétés Tag au préalable
2 et 4 pour TextBox1 et TextBox2
3 et 5 pour TextBox3 et TextBox4
VB:
Private Sub CommandButton1_Click()
Dim c As Control, i%, j%
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
    Select Case c.Tag * 1 Mod 2
    Case 0
    a = Len(c) > 0: i = i + a
    Case 1
    b = Len(c) > 0: j = j + b
    End Select
End If
Next
If i = -1 Or j = -1 Then MsgBox "Données erronées", vbCritical, "Erreur!"
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Simplement :
VB:
If (TextBox202.Value = "" Xor TextBox200.Value = "") Or _
   (TextBox203.Value = "" Xor TextBox201.Value = "") Then
        MsgBox "Données erronées"
        Exit Sub: End If
 

Discussions similaires

Réponses
4
Affichages
456
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…