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
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
Dernière édition: