Bonjour le forum,

Lors d'exécution d'un Userform, contenant 40 textbox disposées en ligne par groupe de 4, je cherche à vérifier que si ma 1ère textbox est remplie, et que la 3ème et la 4ème sont vides un message s'affiche.
Sinon, l'exécution du reste du code s'exécute.
Le problème est que si les textbox du groupe suivant étant vides, le message s'affiche malgré tout, alors qu'il ne devrait pas.

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
Set Wb1 = Workbooks("Book1.xlsb")
Set Ws1 = Wb1.Worksheets("Sheet 1")
Set Ws2 = Wb1.Worksheets("Sheet 2")
Set Ws3 = Wb1.Worksheets("Sheet 3")
 
    If Me.Controls("TxtBox1").Value = "" Then
        MsgBox "Veuillez la première case", vbExclamation + vbOKOnly
        Exit Sub
    End If
'------------------------------------------------------------------------
'Loop on each textbox written
'------------------------------------------------------------------------
    For j = 1 To 10
 
        If Me.Controls("TxtBox1" & j).Value <> "" And Me.Controls("TxtBox3" & j).Value = "" Or Me.Controls("TxtBox4" & j).Value = "" Then
            MsgBox "Veuillez renseigner les textbox " & j & "", vbExclamation + vbOKOnly
            Exit Sub
        Else
 
            'Write the values into the cells
            If Me.Controls("TxtBox_Action" & j).Value <> "" And Me.Controls("TxtBox_Pilote" & j).Value <> "" And Me.Controls("TxtBox_Deadline" & j).Value <> "" Then
                Ws2.Cells(j + 1, 1) = Label_1.Caption
                Ws2.Cells(j + 1, 2) = CDate(Format(CStr(Date), "dd/mm/yyyy"))
                Ws2.Cells(j + 1, 3) = WsHAP.Cells(1, 1)
                Ws2.Cells(j + 1, 4) = Me.Controls("Label_2" & j).Caption
                Ws2.Cells(j + 1, 5) = Label_3.Caption
                Ws2.Cells(j + 1, 6) = Label_4.Caption
                Ws2.Cells(j + 1, 7) = Me.Controls("TxtBox1" & j).Value
                Ws2.Cells(j + 1, 8) = Me.Controls("TxtBox2" & j).Value
                Ws2.Cells(j + 1, 9) = Me.Controls("TxtBox3" & j).Value
                Ws2.Cells(j + 1, 10) = CDate(Format(CStr(Me.Controls("TxtBox4" & j).Value), "dd/mm/yyyy"))
 
                    'Write the values of closed action
                    If Ws3.Cells(j, 3) <> "" Then
                        Ws2.Cells(j + 1, 13) = CDate(Format(CStr(Date), "dd/mm/yyyy"))
                        Ws2.Cells(j + 1, 14) = Ws3.Cells(1, 1)
                        Ws2.Cells(j + 1, 15) = Ws3.Cells(j, 3)
                    End If
'            End If
        End If
    Next j
J'imagine que le problème se situe au niveau de la ligne 15.