Visual Basic (EXCEL VBA) Création d'un USERFORM via CLASS
Codor_2023
Messages postés2Date d'inscriptionmercredi 30 novembre 2022StatutMembreDernière intervention 1 décembre 2022
-
1 déc. 2022 à 00:30
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 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.