Bonjour,

Je suis débutant et j'ai souhaité contrôler les éléments saisis dans 12 textbox d' un USF (userform2).

Le code ci-après fonctionne pour ce USF; en revanche si je créé un deuxième USF et que j'adapte le code aux textbox qu'il contient, le message "erreur d'exécution 9" apparaît à l'ouverture du 2ème Userform

Malgré toutes mes recherches je ne comprends pas pourquoi.

Quelqu'un pourrait-il m'aider ?

Avec mes Remerciements
Code du Module de Classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Public WithEvents txtBox As MSForms.textbox
Private Sub txtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(".,0123456789", Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
        MsgBox "Vous avez saisi du texte par erreur. le caractère saisi n'est pas valide, vous devez entrer un nombre !!!", vbCritical, "ERREUR de SAISIE"
    End If
End Sub
Code du Userform2
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
 
Dim i As Integer
Dim n As Integer
Dim nbVirgule As Integer
Dim nbPoint As Integer
 
'Empêcher de saisir du texte et avertir d'une mauvaise saisie (lien avec module de classe)
Dim txtBox(1 To 12) As New Classe1 'Pour 12 TextBox
Private Sub UserForm_Initialize()
    Dim n, x As Integer
    Dim ctrl As Control
    'Pour les 12 premiers
    For Each ctrl In Controls
        For n = 1 To 12
            If ctrl.Name = "TextBox" & n Then
                x = x + 1
                Set txtBox(x).txtBox = ctrl
            End If
        Next n
    Next
 
End Sub
 
'Obliger à saisir toutes les cases vides lors de la validation du USF (si case vide alors mettre un zéro)
Private Sub Cmd1_click()
 
    For i = 1 To 12
        If Me.Controls("TextBox" & i) = "" Then MsgBox "Case" & i & "vide" & vbNewLine & "si vide mettre un 0": Exit Sub
    Next i
 
'Envoyer le contenu des textbox vers les cellules excel en acceptant les calculs avec virgules et points
    Range("A1") = Val(Replace(Me.TextBox1, ",", "."))
    Range("A2") = Val(Replace(Me.TextBox2, ",", "."))
    Range("A3") = Val(Replace(Me.TextBox3, ",", "."))
    Range("A4") = Val(Replace(Me.TextBox4, ",", "."))
    Range("A5") = Val(Replace(Me.TextBox5, ",", "."))
    Range("A6") = Val(Replace(Me.TextBox6, ",", "."))
    Range("A7") = Val(Replace(Me.TextBox7, ",", "."))
    Range("A8") = Val(Replace(Me.TextBox8, ",", "."))
    Range("A9") = Val(Replace(Me.TextBox9, ",", "."))
    Range("A10") = Val(Replace(Me.TextBox10, ",", "."))
    Range("A11") = Val(Replace(Me.TextBox11, ",", "."))
    Range("A12") = Val(Replace(Me.TextBox12, ",", "."))
 
    Label1 = Range("A13")
End Sub