Visual Basic (EXCEL VBA) Création d'un USERFORM via CLASS

Codor_2023 Messages postés 2 Date d'inscription mercredi 30 novembre 2022 Statut Membre Dernière intervention 1 décembre 2022 - 1 déc. 2022 à 00:30
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 1 déc. 2022 à 11:11

Salut Tous,

Je suis un nouveau dans le secteur :-)

Voilà je cherche à automatiser une application de façon à ce que toutes les instances (Userform, Contrôles ActiveX: TextBox, ListBox, Label, etc) soient créés via une Class.

J'ai utilisé un Module Standard afin d'instancier un objet pour créer un UserForm en premier lieu. Ci-dessous le code au niveau d'un Module Standard :

Remarque:

Une boîte de dialogue qui se lance et vient de relever une erreur, de type "Erreur d'exécution de type: '429'". Description:  "Un Composant ActiveX ne peut pas créer d'objet".

Code:

Option Explicit

Public Const cons_strFORM_NAME$ = "Forms.UserForm."
Public Const cons_bytUNEA As Byte = 1
Public Const cons_bytPENTA As Byte = 5
Public Const cons_bytDECA As Byte = 10
Public mpub_objForm As Object

Public Sub onAction_oFORM_Create()

    Dim mpub_strForm_Name$
    
  ' On Error GoTo Flag_Exit
    
    mpub_strForm_Name = cons_strFORM_NAME & VBA.Conversion.CStr(cons_bytUNEA)
    Set mpub_objForm = VBA.CreateObject(mpub_strForm_Name) ' Late Binding
    
    With mpub_objForm
            .Width = (cons_bytDECA * cons_bytDECA)
            .Height = (cons_bytDECA * cons_bytPENTA)
    End With
    
Exit Sub
Flag_Exit:
    
    VBA.Information.Err.Clear
    Resume Next
End Sub

------------------

NB: Je sais qu'il faudrait instancier un objet de type "MSForms.UserForm.1". Mais j'ai opté pour une liaison tardive (Late Binding) via une boite de dialogue 'VBA.CreateObjet(""). Si quelqu'un peut me fournir une explication, cela serait bien aimable.

Merci d'avance!

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 déc. 2022 à 11:11
0
Rejoignez-nous