Positionner les controls dans une frame

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

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