Positionner les controls dans une frame

Résolu/Fermé
ngio1301 Messages postés 46 Date d'inscription jeudi 5 décembre 2019 Statut Membre Dernière intervention 14 mai 2022 - Modifié le 4 mars 2020 à 00:40
ngio1301 Messages postés 46 Date d'inscription jeudi 5 décembre 2019 Statut Membre Dernière intervention 14 mai 2022 - 4 mars 2020 à 22:26
Salut à tous!
je voudrais lorsque les controls sont créés, qu'ils soient positionnés dans la frame en le bloc i à gauche, le bloc j au milieu, puis le bloc k à droite

voici le code:

Sub AjoutChekboxAuto()
Dim Obj As Control
Dim Cl As Classe1
Dim i, j, k As Integer

Set Collect = New Collection

For i = 1 To 15 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")

With Obj
.Name = "Opt" & i
.Object.Caption = Sheets(i).Name
.Left = 10
.Top = 20 * i + 10
.Width = 130
.Height = 20
End With
'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next i

For j = 16 To 30 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")
With Obj
.Name = "Opt" & j
.Object.Caption = Sheets(j).Name
.Left = 150
.Top = 20 * j + 10
.Width = 130
.Height = 20
End With

'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next j

For k = 31 To Sheets.Count 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")
With Obj
.Name = "Opt" & k
.Object.Caption = Sheets(k).Name
.Left = 300
.Top = 20 * k + 10
.Width = 130
.Height = 20
End With

'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next k
End Sub

j'ai bien le décalage vers la droite, mais les controls restent à la suite. Ils ne se positionnent pas en haut.

merci pour l'aide.
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
4 mars 2020 à 09:31
Bonjour,

comme ceci:

Sub AjoutChekboxAuto()
Dim Obj As Control
Dim Cl As Classe1
Dim i, j, k As Integer

Set Collect = New Collection

For i = 1 To 15 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")

With Obj
.Name = "Opt" & i
.Object.Caption = Sheets(i).Name
.Left = 10
.Top = 20 * i + 10
.Width = 130
.Height = 20
End With
'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next i

For j = 16 To 30 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")
With Obj
.Name = "Opt" & j
.Object.Caption = Sheets(j).Name
.Left = 150
.Top = 20 * j - 300 + 10
.Width = 130
.Height = 20
End With

'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next j

For k = 31 To Sheets.Count 'boucle pour la création des CheckBox
Set Obj = FrCheck.Controls.Add("forms.Checkbox.1")
With Obj
.Name = "Opt" & k
.Object.Caption = Sheets(k).Name
.Left = 300
.Top = 20 * k - 600 + 10
.Width = 130
.Height = 20
End With

'ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.ChkBx = Obj
Collect.Add Cl
Next k
End Sub

1
ngio1301 Messages postés 46 Date d'inscription jeudi 5 décembre 2019 Statut Membre Dernière intervention 14 mai 2022
4 mars 2020 à 22:25
Bonsoir cs_Le Pivert. Un grand merci à toi, cela fonctionne super!!
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 mars 2020 à 09:17
Bonjour,

NB : Quand tu postes du code sur le forum ...
Utilises les balises de code avec indication du langage (=coloration syntaxique)
Explications disponibles ici : Comment utiliser les balises de code
Exemple :
Sub UtiliserLesBalises()
  MsgBox "Merci d'utiliser les balises de code"
End Sub

0
ngio1301 Messages postés 46 Date d'inscription jeudi 5 décembre 2019 Statut Membre Dernière intervention 14 mai 2022
4 mars 2020 à 22:26
Ok je le ferai, je ne savais pas. merci
0