Bonjour,

J'ai créé un userform dans Excel. J'y ajoute des contrôles textbox par programmation, au moyen de la procédure AddTextBox. Tout se passe bien. J'essaie ensuite d'associer, toujours par programmation, un événement BeforeUpdate à chacun des contrôles ainsi créés, au moyen de la procédure AddEventTextboxSoldeBeforeUpdate. Le code est correctement créé dans le module du formulaire.
Mais ces contrôles ne réagissent à aucun événement (p. ex., un dblclick), alors que les événements d'un textbox créé manuellement juste à côté se déclenchent.

Où est le problème?

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
 
Sub AddTextBox(strName As String, iLeft As Integer, _
iTop As Integer, iWidth As Integer, iHeight As Integer, _
iTag As String, Optional bMultipage As Boolean = False, _
Optional PageNum As Integer = 0, Optional Alignment As Integer = fmTextAlignRight)
 
Dim Obj As Object
    If bMultipage Then
        Set Obj = MultiPage1.Pages(PageNum).Controls.Add("forms.Textbox.1")
    Else
        Set Obj = Me.Controls.Add("forms.Textbox.1")
    End If
 
    With Obj
        .name = strName
        .Left = iLeft
        .Top = iTop
        .Width = iWidth
        .Height = iHeight
        .Tag = iTag
        .TextAlign = Alignment
 
    End With
    AddEventTextboxSoldeBeforeUpdate Obj
End Sub
 
 
Sub AddEventTextboxSoldeBeforeUpdate(oCtrl As Object)
Dim X As Long
 
    With ActiveWorkbook.VBProject.VBComponents("f_MaJSoldes").CodeModule
         X = .CountOfLines
        .InsertLines X + 1, "Private Sub " & oCtrl.name & "_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)"
        .InsertLines X + 2, "ActualiseCelluleClasseur Me." & oCtrl.name & ", 6"
        .InsertLines X + 3, "End Sub"
    End With
End Sub
Merci d'avance

Ph.