Instanciation d'élément dans UserForm en fonction d'une variable
Résolu/Fermé
user1711
Messages postés
10
Date d'inscription
mercredi 7 octobre 2015
Statut
Membre
Dernière intervention
14 octobre 2015
-
Modifié par user1711 le 9/10/2015 à 09:17
user1711 Messages postés 10 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 14 octobre 2015 - 9 oct. 2015 à 12:40
user1711 Messages postés 10 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 14 octobre 2015 - 9 oct. 2015 à 12:40
A voir également:
- Instanciation d'élément dans UserForm en fonction d'une variable
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Inspecter l'élément safari ✓ - Forum MacOS
- Pdf element - Télécharger - PDF
- Fonction si et - Guide
1 réponse
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
9 oct. 2015 à 09:21
9 oct. 2015 à 09:21
Bonjour,
Teste ce code dans un nouveau classeur.
Tu y dessines un UserForm et tu places ce code dans le module de l'userform :
Teste ce code dans un nouveau classeur.
Tu y dessines un UserForm et tu places ce code dans le module de l'userform :
Private Sub UserForm_Initialize()
Dim i As Integer, MonLabel As Object
For i = 1 To 6 '6 sera à remplacer par : List_objectifs.ListCounts
Set MonLabel = Me.Controls.Add("Forms.Label.1", "MonLabel" & i, True)
With MonLabel
'Move Left, Top, Width, Height
.Move 5, 20 * i, 100, 20
.Caption = MonLabel.Name
End With
Next i
End Sub
Modifié par user1711 le 9/10/2015 à 11:21
J'ai testé plusieurs possibilités avec list_objectifs.list(x), listindex, selected mais ca me met des erreurs a chaque fois.
Tu n'aurais pas une petite idée par hasard ?
Et si je veux rajouter 3 bouttons dans un groupbutton pour chaque objectifs, comment procéder ?
Modifié par pijaku le 9/10/2015 à 11:30
Fais toi un petit dessin avec les emplacements ou tu veux ajouter tes optionsButtons.
Le principe est le même, tu créées un OptionButton :
Puis tu l'incorpores dans un groupe :
Puis tu le places :
Tu n'as plus qu'à inclure ça dans une double boucle :
> celle donnée précédemment pour i de 1 à 6
> une pour y de 1 à 3 pour ajouter 3 boutons à chaque "tour" de i
Soit : (à tester)
Private Sub UserForm_Initialize() Dim i As Integer, j As Integer, MonLabel As Object, OptB As Object For i = 1 To 6 '6 sera à remplacer par : List_objectifs.ListCounts Set MonLabel = Me.Controls.Add("Forms.Label.1", "MonLabel" & i, True) With MonLabel 'Move Left, Top, Width, Height .Move 5, 20 * i, 100, 20 .Caption = MonLabel.Name End With For j = 1 To 3 Set OptB = Me.Controls.Add("Forms.OptionButton.1", "MonButton" & i & "_" & j, True) With OptB .GroupName = "Groupe" & i .Move 105 * j, 20 * i, 100, 20 .Caption = OptB.Name End With Next j Next i End Sub9 oct. 2015 à 11:49
Mais le problème de la boucle j est qu'elle décale les boutons du même groupe de 105 a chaque bouton dans ton exemple.
Hors dans mon cas les boutons sont à droite de ma userform donc si je met 690*j, j'ai qu'un seul bouton qui apparaît et les autres doivent se balader dans l'espace ...
Il n'y aurait pas un attributs à ajouter pour choisir l'intervalle entre chaque boutons plutôt que de faire un X * j ?
9 oct. 2015 à 12:08
Essaye ce code dans un classeur neuf, avec un userform neuf.
Private Sub UserForm_Initialize() Dim i As Integer, j As Integer, MonLabel As Object, OptB As Object Me.Height = 200 Me.Width = 500 For i = 1 To 6 '6 sera à remplacer par : List_objectifs.ListCounts Set MonLabel = Me.Controls.Add("Forms.Label.1", "MonLabel" & i, True) With MonLabel 'Move Left, Top, Width, Height .Move 5, 20 * i, 80, 20 .Caption = MonLabel.Name .BorderStyle = fmBorderStyleSingle End With For j = 1 To 3 Set OptB = Me.Controls.Add("Forms.OptionButton.1", "MonButton" & i & "_" & j, True) With OptB .GroupName = "Groupe" & i '85 = largeur du label + 5 (marge) , 100 = largeur de l'optionbutton .Move 85 + (100 * (j - 1)), 20 * i, 100, 20 .Caption = OptB.Name End With Next j Next i End SubPour l'adapter à ton cas, fais toi un dessin...
9 oct. 2015 à 12:40
Encore merci pour ton aide pijaku, je vais enfin pouvoir avancer dans mon projet!