Comme d'autres l'ont dit, passez l'instance de la méthode form à class. Contrairement à d'autres, je vais ajouter:
- Déclarez l'argument AS MSForms.UserForm
- passer le paramètre ByVal.
- Si vous appelez à partir de l'objet UserForm lui-même, utilisez le mot-clé dans l'appel.
Il est un bref exemple:
' <Module1.bas>
Option Explicit
Sub Main()
UserForm1.Show vbModeless
UserForm2.Show vbModeless
End Sub
' </Module1.bas>
' <UserForm1.frm>
Option Explicit
Private Sub UserForm_Activate()
Dim c As Class1
Set c = New Class1
c.AddComboBox Me
End Sub
' </UserForm1.frm>
' <UserForm2.frm>
Option Explicit
Private Sub UserForm_Activate()
Dim c As Class1
Set c = New Class1
c.AddComboBox Me
End Sub
' </UserForm2.frm>
' <Class1.cls>
Option Explicit
Public Sub AddComboBox(ByVal MSForms_UserForm As MSForms.UserForm)
Dim cb As MSForms.ComboBox
Set cb = MSForms_UserForm.Controls.Add("Forms.ComboBox.1")
End Sub
' </Class1.cls>
"Vous ne pouvez pas" semble être la réponse. –