V
valou
Guest
Bonjour,
Après avoir regarder d'anciens messages sur ce forum, je m'en remet à vous.
Voici mon problème :
J'ai un userform enregsitré dans le classeur. A l'appel de ce formulaire, je creer des labels et des optionbuttons dynamiquement.
Chaque bouton crée porte le nom : "Opt" + nombre.
Mon userform n'est jamais enregsitré après cet ajout, car je m'en resert plusieurs fois.
Maintenant, ce que je voudrais faire, c'est que lorsque l'utilisateur clique sur le bouton 2 (Opt2), je coche par defaut toutes les autres opts.
Et la j'ai un problème :
J'ai ecrit "en dur" derrière mon formulaire :
Sub Opt2_Click()
msgbox "blabla"
end sub
et ce code ne s'execute jamais. Cela vient probablement du fait que les opt sont crees dynamiquement.
Quelqu'un a -t-il une solution? J'ai peut etre commis des erreurs lors de la creation dynamique qui m'empèche maintenant de travailler.
Merci d'avance, en espérant avoir ete claire
Je suis désolée, mais mon fichier est troplourd pour passer, meme zipper.
Voici le code pour creer mon opt :
'permet d'ajouter dynamiquement des options buttons dans un userform donné
Sub Ajout_Opt(usr As UserForm, nb As Integer, nom As String, valeur As String, groupe As String, large As Integer, gauche As Integer, haut As Integer, hauteur As Integer)
'variable
Dim opt As Object
Set opt = usr.Controls.Add("forms.optionbutton.1")
With opt
.Name = nom & nb
.Caption = valeur
.GroupName = groupe
.BackColor = &HC0E0FF
.Width = large
.Left = gauche
.Height = haut
.Top = hauteur
End With
End Sub
voici comment je l'appelle :
nb = 1
For indice = 0 To UBound(tab_question, 2)
'question
Call Processus.Ajout_Lbl(usr, indice, "LblQuestion", tab_question(1, indice), 480, 42, 24, hauteur)
hauteur = hauteur + 25
Ligne = tab_question(2, indice)
For nb_rep = 1 To tab_question(3, indice)
Call Processus.Ajout_Opt(usr, nb, "Opt", Sheets(tab_question(4, indice)).Range("D" & Ligne).Value, "Groupe" & indice, 70, 160, 18, hauteur)
nb = nb + 1
Ligne = Ligne + 1
hauteur = hauteur + 25
Next nb_rep
Call Processus.Ajout_Opt(usr, nb, "Opt", "Non Applicable", "Groupe" & indice, 70, 160, 18, hauteur)
hauteur = hauteur + 25
nb = nb + 1
Next indice
Après avoir regarder d'anciens messages sur ce forum, je m'en remet à vous.
Voici mon problème :
J'ai un userform enregsitré dans le classeur. A l'appel de ce formulaire, je creer des labels et des optionbuttons dynamiquement.
Chaque bouton crée porte le nom : "Opt" + nombre.
Mon userform n'est jamais enregsitré après cet ajout, car je m'en resert plusieurs fois.
Maintenant, ce que je voudrais faire, c'est que lorsque l'utilisateur clique sur le bouton 2 (Opt2), je coche par defaut toutes les autres opts.
Et la j'ai un problème :
J'ai ecrit "en dur" derrière mon formulaire :
Sub Opt2_Click()
msgbox "blabla"
end sub
et ce code ne s'execute jamais. Cela vient probablement du fait que les opt sont crees dynamiquement.
Quelqu'un a -t-il une solution? J'ai peut etre commis des erreurs lors de la creation dynamique qui m'empèche maintenant de travailler.
Merci d'avance, en espérant avoir ete claire
Je suis désolée, mais mon fichier est troplourd pour passer, meme zipper.
Voici le code pour creer mon opt :
'permet d'ajouter dynamiquement des options buttons dans un userform donné
Sub Ajout_Opt(usr As UserForm, nb As Integer, nom As String, valeur As String, groupe As String, large As Integer, gauche As Integer, haut As Integer, hauteur As Integer)
'variable
Dim opt As Object
Set opt = usr.Controls.Add("forms.optionbutton.1")
With opt
.Name = nom & nb
.Caption = valeur
.GroupName = groupe
.BackColor = &HC0E0FF
.Width = large
.Left = gauche
.Height = haut
.Top = hauteur
End With
End Sub
voici comment je l'appelle :
nb = 1
For indice = 0 To UBound(tab_question, 2)
'question
Call Processus.Ajout_Lbl(usr, indice, "LblQuestion", tab_question(1, indice), 480, 42, 24, hauteur)
hauteur = hauteur + 25
Ligne = tab_question(2, indice)
For nb_rep = 1 To tab_question(3, indice)
Call Processus.Ajout_Opt(usr, nb, "Opt", Sheets(tab_question(4, indice)).Range("D" & Ligne).Value, "Groupe" & indice, 70, 160, 18, hauteur)
nb = nb + 1
Ligne = Ligne + 1
hauteur = hauteur + 25
Next nb_rep
Call Processus.Ajout_Opt(usr, nb, "Opt", "Non Applicable", "Groupe" & indice, 70, 160, 18, hauteur)
hauteur = hauteur + 25
nb = nb + 1
Next indice