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
 

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
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 333
Membres
103 519
dernier inscrit
Thomas_grc11