Controle dynamique VBA

Résolu
Signaler
Messages postés
18
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
5 novembre 2008
-
Messages postés
18
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
5 novembre 2008
-
Bonjour, je développe sur VBA une petite application qui nécessite la création de controles dynamiques. Jusque la pas de problème pour les crées, seuleument je n'arrive pas acceder au méthodes qui permettent d'effectuer des actions lorsque je clique sur ces objets. Voici mon code :


'Partie contenue dans l'userform**********************************************************
Private Sub UserForm_Initialize()
Dim hauteur, gauche, largeur, haut As Integer
Dim Obj1, Obj2 As Control
Dim Cl1 As Classe1
Dim Cl2 As Classe2
Dim i As Integer


hauteur = 15
gauche = 10
largeur = 40
haut = 30


nbpuisage = 5


Set Collect1 = New Collection
Set Collect2 = New Collection


For i = 1 To nbpuisage


    Set Obj1 = UserForm2.Controls.Add("Forms.ComboBox.1", , Visible)
    With Obj1
            .Left = gauche + 105
            .Top = haut
            .Width = largeur + 40
            .Height = hauteur
            .Visible = True
    End With


    'ajout de l'objet dans la classe
    Set Cl1 = New Classe1
    Set Cl1.ComboBx = Obj1
    Collect1.Add Cl1


Set Obj2 = UserForm2.Controls.Add("Forms.TextBox.1", , Visible)
    With Obj2
            .Left = gauche
            .Top = haut
            .Width = largeur
            .Height = hauteur
            .Text = "8" & i
            .Visible = True
    End With


'ajout de l'objet dans la classe
    Set Cl2 = New Classe2
    Set Cl2.TextBx = Obj2
    Collect2.Add Cl2
   
haut = haut + 20


Next i


'Paramètrage de l'userform
With CommandButton1
            .Left = gauche + 140
            .Top = haut '+ nbpuisage * (Hauteur)
            .Visible = True
End With


UserForm2.Height = 78 + nbpuisage * (hauteur + 6)
UserForm2.Width = 205
End Sub

'Partie contenue dans classe1**********************************************************************
Option Explicit


Public WithEvents ComboBx As MSForms.ComboBox
Private Sub ComboBx_Change()
    'cet exemple affiche le nom et la valeur de l'objet cliqué
    MsgBox ("coucou")
End Sub

'Partie contenue dans classe1**********************************************************************
Option Explicit


Public WithEvents TextBx As MSForms.TextBox


Private Sub TextBx_Click()
    'cet exemple affiche le nom et la valeur de l'objet cliqué
    MsgBox TextBx.Name & ": " & TextBx.Value
End Sub

Merci d'avance

3 réponses

Messages postés
18
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
5 novembre 2008

Bonjour,

Après plusieurs heures de débacles j'ai enfin réussi à utiliser mes contrôles crées dynamiquement. Pour cela je me suis inspiré fortement du document que l'on trouve ici : http://silkyroad.developpez.com/VBA/VisualBasicEditor
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
Salut,

pas compris la question !

A+
Messages postés
18
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
5 novembre 2008

Salut bigfish,

En fait j'essaye de créer des controle dynamique avec ce code. Le problème c'est qu'une fois crée ces controles ne réagissent pas aux clics par exemple. Je voulais savoir ce qui ne fonctionnait pas dans le bout de code que j'ai tapé. En gros pourquoi lorsque je clique sur un de mes comboBox le message "coucou" ne s'affiche t-il pas ?