Créer une forme avec du code VBA, forme ne repond pas

Bonjour,

J'ai un problème avec mon classeur. J'ai un userform existant et je viens créer une forme dedans avec du code vba dans un module. Je viens par la suite dans ce même module ajouter un évenement à cette forme dans le même module.

Par exemple, je créer le bouton1 dans le userform1 et je viens ecrire mon évenement à l aide de code vba. Tout fonctionne très bien: mon bouton est créé et le code si je click dessus aussi. Seule problème, lorsque mon userform apparait et que je click sur le bouton, rien ne se passe. Pourtant le nom du bouton est correct, tout semble correct!

Lorsque je créer le même bouton de façon manuel, tout fonctionne! Je ne sais pas trop pourquoi! Quelqu un aurais une idée du problème? Merci à l avance!

Bonjour,

Je pense qu'il te faut passer par un module de classe afin de récupérer l'évènement. Exemple, dans le module de ta Form, la création du bouton (ici sur Click du formulaire) :

Dim Bouton As New Classe1

Private Sub UserForm_Click()

    Set Bouton.Btn = Me.Controls.Add("Forms.CommandButton.1", "MonBouton")

    With Bouton.Btn

        .Caption = "Mon beau Bouton"
        .Width = 100
        .Height = 20
        .Left = Me.Width / 2 - .Width / 2
        .Top = Me.Height / 2 - .Height / 2

    End With

End Sub

Dans le module de classe nommé "Classe1" :

Public WithEvents Btn As MSForms.CommandButton

Private Sub Btn_Click()

   MsgBox Btn.Caption

End Sub

Hervé.

Merci beaucoup,

Je ne savais pas trop à quoi servais les modules classe, maintenant je sais! Mais pour ce que je veux faire, je crois avoir trouvé un moyen plus simple. Je pensais créer un nombre variable de textebox dans mon userform, mais le problème est que je veux limiter l'affichage à 5 à la fois pour éviter une liste trop longue et faciliter le remplissage de celles-ci.

Alors j'ai pensé peut-être créer mon userform avec 5 textbox et simplement cacher celle que je n'ai pas besoin. SI j'ai besoin de 7 textbox, j'affiche le userform au complet, puis je le réaffiche une deuxième fois mais avec seulement les 2 première textbox de visible.

À mon avis c'est plus simple. Je ne sais pas ce que tu en pense... Est-ce une bonne idée ? Sinon je vais utiliser les classe modules..

Rechercher des sujets similaires à "creer forme code vba repond pas"