Positionner les controls dans une frame

Résolu
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
ngio1301 Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -
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.

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention  
 
Bonsoir cs_Le Pivert. Un grand merci à toi, cela fonctionne super!!
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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   Statut Membre Dernière intervention  
 
Ok je le ferai, je ne savais pas. merci
0