Positionnement checkbox dans UF

Airone784

XLDnaute Occasionnel
Bonjour à tous,

j'utilise ce code pour créer dynamiquement des checkbox dans une UF.

Code:
 '--------------------------------------
'Procédure de création des CheckBoxs à placer dans l'UserForm.
'L'UserForm doit préalablement contenir un bouton nommé CommandButton1

Option Explicit

Private Sub CommandButton1_Click()
Dim Obj As Control
Dim Cl As Classe1
Dim i As Integer

Set Collect = New Collection

For i = 1 To 30 'boucle pour la création des CheckBox
    Set Obj = Me.Controls.Add("forms.Checkbox.1")
    With Obj
        .Name = "moncheckbox" & i
        .Object.Caption = "le texte" & i
        .Left = 140
        .Top = 30 * i + 10
        .Width = 50
        .Height = 20
    End With
    
    'ajout de l'objet dans la classe
    Set Cl = New Classe1
    Set Cl.ChkBx = Obj
    Collect.Add Cl
Next i

End Sub
'--------------------------------------

 '--------------------------------------
'A placer dans un module de classe nommé "Classe1"
'
Option Explicit

Public WithEvents ChkBx As MSForms.CheckBox

'Exemple pour gérer l'évènement clic sur les objets type CheckBox
Private Sub ChkBx_Click()
    'cet exemple affiche le nom et la valeur de l'objet cliqué
    MsgBox ChkBx.Name & ": " & ChkBx.Value
End Sub
'--------------------------------------

'--------------------------------------
'A placer dans un module standard
Option Explicit

Public Collect As Collection
'--------------------------------------

Seulement je souhaite mettre au maximum 5 checkbox par colonne. Le code ci-dessus gère bien la notion de positionnement vertical:

Code:
.Top = 30 * i + 10

mais pas le positionnement horizontal :

Code:
.Left = 140

j'ai beau faire des essais avec un système de boucle du genre :

for v = 1 to 5
.left=40
for v = 6 to 10
.left=80
...

Seul problème dans ce cas il faut que je définisse que v est mon nombre de checkbox que je vais intégrer.

Bref, je nage.

Merci de l'aide :)

Bye
 

jpb388

XLDnaute Accro
Re : Positionnement checkbox dans UF

bonjour
pas testé mais avec un sélect case cela devrait fonctionner
With Obj
.Name = "moncheckbox" & i
.Object.Caption = "le texte" & i
Select Case i
Case 1
.Left = 140
Case 6
.Left = 280
Case 12
.Left = 320
Case 18
.Left = 460
Case 24
.Left = 600
Case 30
.Left = 740
End Select
.Top = 30 * i + 10
.Width = 50
.Height = 20
End With
a+
 

Statistiques des forums

Discussions
312 279
Messages
2 086 735
Membres
103 381
dernier inscrit
e.perichon@apco-technolog