Bonjour,

J'ai un UserForm dans lequel je crée dynamiquement une serie de label et textbox lors de l'initailisation du UserForm, En fonction d'éléments de ma feuille.

Schématiquement j'ai d'abord cette serie de declarations en tête de code de mon userform :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Option Explicit
 
Private WithEvents CBt_Valid As MSForms.CommandButton
Private WithEvents CBt_Cancel As MSForms.CommandButton
Private NumBox As Integer
Private TxBx() As MSForms.TextBox
Private Label() As MSForms.Label

Ensuite j'ai l'initailisation du USF :

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
For i = 1 To NumOfTank 'boucle pour la création des Labels et TextBox
 
    Set Label(i) = Me.Controls.Add("forms.label.1")
    With Label(i)
        .Name = "label" & i
        .Caption = Store.Offset(i - 1, 0).Value
 
        .Left = 10
        .Top = (hauteur + 10) * i + 20
        .Width = largeur
        .Height = hauteur
    End With
 
    Set TxBx(i) = Me.Controls.Add("forms.textbox.1")
    With TxBx(i)
        .Name = "TextBox" & i
        If (Store.Offset(i - 1, 1).Value = "") Then
            .Value = 0.98
        Else
            .Value = Store.Offset(i - 1, 1).Value
        End If
        .Left = 15 + largeur + 5
        .Top = (hauteur + 10) * i - 2 + 20
        .Width = 40
        .Height = hauteur + 5
    End With
Next i

L'initialisation se passe bien mes labels , textboxs ( avec leurs valeurs) apparaissent.
Je souhaite ensuite traiter ces valeurs dans la sub_click d'un de mes boutons :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub CBt_Valid_Click()
 
        MsgBox TxBx(0).Value
 
End Sub
Mais j'obtiens le message suivant :

runtime error '91'
Object variable or With block variable not set
c'est à dire que ce qui a été fait sur TxBx() (ReDim, Set, .Value,etc.) ne semble avoir de portée que dans la sub initialize, alors que la declaration est faite en dehors.

Merci de m'apporter vos lumières en prog VBA