Controle dynamique VBA

Résolu
SeKo54 Messages postés 18 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 5 novembre 2008 - 10 avril 2008 à 14:24
SeKo54 Messages postés 18 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 5 novembre 2008 - 22 avril 2008 à 15:41
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

SeKo54 Messages postés 18 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 5 novembre 2008
22 avril 2008 à 15:41
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
10 avril 2008 à 22:05
Salut,

pas compris la question !

A+
0
SeKo54 Messages postés 18 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 5 novembre 2008
11 avril 2008 à 08:47
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 ?
0
Rejoignez-nous