Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utiliser les contrôles d'un userform créé dynamiquement

  • Initiateur de la discussion Initiateur de la discussion thilam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thilam

XLDnaute Junior
Bonjour à toutes et tous,
Je souhaiterais afficher un userform qui liste les champs data du tableau croisé dynamique sélectionné, avec le nom du champ , la fonction de consolidation courante (somme, nb,...) et le format de nombre de la colonne.
L'idée est de pouvoir modifier les fonctions et le format des champs à l'aide du formulaire en une fois plutôt que de le faire champ par champ.

j'ai réussi à faire en sorte d'ajouter par programme à un formulaire de base les contrôles correspondant au nombre de data de mon tableau croisé. Le formulaire s'affiche correctement.
Là où ça se gâte c'est que les procédures click liées aux contrôles n'existent pas. Quand je clique sur les boutons d'options il ne se passe rien.

Y a-t'il une solution pour créer ces procédures de manière dynamique afin que le formulaire fonctionne?

Je vous copie le morceau de code qui adapte le formulaire en fonction du nb de colonnes du tableau (NBC) et je joins une image du formulaire de base (pour clarifier mon propos)


Merci de votre aide

Code:
Sub creaform()
 
 
Load NbChpsTCD
    NbChpsTCD.Height = 95 + 30 * (NBC)
 
 
 
    With NbChpsTCD
 
    For I = 2 To NBC
 
        Set cadre1 = .Controls.Add("forms.Frame.1", "Champ" & I)
            With cadre1
                .Width = 100
                .Height = 30
                .TOP = 30 * (I - 1) + 5
                .Left = 140
                .Caption = ""
                Set OptionButton1 = .Controls.Add("forms.OptionButton.1", "Somme" & I)
                    With OptionButton1
                        .Width = 42
                        .Height = 20
                        .TOP = 5
                        .Left = 5
                        .Caption = "Somme"
                    End With
 
                 Set OptionButton2 = .Controls.Add("forms.OptionButton.1", "Nbre" & I)
                    With OptionButton2
                        .Width = 45
                        .Height = 20
                        .TOP = 5
                        .Left = 47
                        .Caption = "Nombre"
                    End With
                End With
 
        Set cadre2 = .Controls.Add("forms.Frame.1", "Format" & I)
            With cadre2
                .Width = 190
                .Height = 30
                .TOP = 30 * (I - 1) + 5
                .Left = 252
                .Caption = ""
                Set OptionButton3 = .Controls.Add("forms.OptionButton.1", "Sme" & I)
                    With OptionButton3
                        .Width = 42
                        .Height = 20
                        .TOP = 5
                        .Left = 5
                        .Caption = "# ##0"
                        .event
                    End With
 
                 Set OptionButton4 = .Controls.Add("forms.OptionButton.1", "Smd" & I)
                    With OptionButton4
                        .Width = 60
                        .Height = 20
                        .TOP = 5
                        .Left = 65
                        .Caption = "# ##0.00"
                    End With
 
                 Set OptionButton5 = .Controls.Add("forms.OptionButton.1", "Pc" & I)
                    With OptionButton5
                        .Width = 40
                        .Height = 20
                        .TOP = 5
                        .Left = 140
                        .Caption = "0%"
'                        MsgBox (.BackColor)
                    End With
 
            End With
 
        Set textbox1 = .Controls.Add("forms.textbox.1", "Nomchamp" & I)
            With textbox1
                .Width = 126
                .Height = 20
                .TOP = 30 * (I - 1) + 10
                .Left = 5
                .Text = ""
                .BackColor = -2147483633
                .BorderStyle = fmBorderStyleNone
                .SpecialEffect = fmSpecialEffectFlat
            End With
 
        Next I
 
            .Okbutton.TOP = 30 * I + 5
 
 
End With
 
End Sub
 

Pièces jointes

  • userform.jpg
    66.3 KB · Affichages: 97
  • userform.jpg
    66.3 KB · Affichages: 110
  • userform.jpg
    66.3 KB · Affichages: 111
Dernière édition:
Re : Utiliser les contrôles d'un userform créé dynamiquement

Bonjour,

hello!
Le problème a été résolu sur un autre forum. Je ne sais pas comment indiquer que le sujet est clos.
ThL

pas de "flag" sur ce forum, tu le dis et c'est très bien.... mets peut être le lien sur l'autre forum, la réponse peut interresser d'autres personnes qui auraient le même souci....

bon après midi
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
566
Réponses
0
Affichages
543
Réponses
3
Affichages
767
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…