Faire référence à une checkbox

laurano

XLDnaute Junior
Bonjour,

J'ai construit un USF nommé MAJCIBLES qui contient 18 checkbox, nommée checkbox1 à checkbox18 et dont la propriété visible est par défaut sur false. J'ai par ailleurs un tableau sur une feuille me donnant des noms de bases dont le nombre peut varier de 1 à 18 (1 à 18 cellules remplies).
Je veux que l'usf s'affiche avec autant de cases à cocher qu'il y a de bases en indiquant sur chaques case affichée un nombe bases. J'ai donc tenté le code suivant :

Dim NBBASES As Integer

NBBASES = Sheets("TRAITEMENT").Range("A10").CurrentRegion.Rows.Count - 2

For i = 1 To NBBASES

With MAJCIBLES.CheckBoxes("CheckBox" & i)
.Caption = Sheets("TRAITEMENT").Cells(10 + i, 1).Value
.Visible = True
End With

Next i

ce qui ne marche pas(message d'erreur).

J'ai aussi tenté une approche plus lourdingue en nommmant un à un les checkboxs

Dim NBBASES As Integer

NBBASES = Sheets("TRAITEMENT").Range("A10").CurrentRegion.Rows.Count - 2

If NBBASES < 2 Then MAJCIBLES.CheckBox1.Caption = Sheets("TRAITEMENT").Cells(11, 1).Value
If NBBASES < 2 Then MAJCIBLES.CheckBox1.Visible = True

If NBBASES < 3 Then MAJCIBLES.CheckBox2.Caption = Sheets("TRAITEMENT").Cells(12, 1).Value
If NBBASES < 3 Then MAJCIBLES.CheckBox2.Visible = True

If NBBASES < 4 Then MAJCIBLES.CheckBox3.Caption = Sheets("TRAITEMENT").Cells(13, 1).Value
If NBBASES < 4 Then MAJCIBLES.CheckBox3.Visible = True

If NBBASES < 5 Then MAJCIBLES.CheckBox4.Caption = Sheets("TRAITEMENT").Cells(14, 1).Value
If NBBASES < 5 Then MAJCIBLES.CheckBox4.Visible = True

If NBBASES < 6 Then MAJCIBLES.CheckBox5.Caption = Sheets("TRAITEMENT").Cells(15, 1).Value
If NBBASES < 6 Then MAJCIBLES.CheckBox5.Visible = True

If NBBASES < 7 Then MAJCIBLES.CheckBox6.Caption = Sheets("TRAITEMENT").Cells(16, 1).Value
If NBBASES < 7 Then MAJCIBLES.CheckBox6.Visible = True

If NBBASES < 8 Then MAJCIBLES.CheckBox7.Caption = Sheets("TRAITEMENT").Cells(17, 1).Value
If NBBASES < 8 Then MAJCIBLES.CheckBox7.Visible = True

If NBBASES < 9 Then MAJCIBLES.CheckBox8.Caption = Sheets("TRAITEMENT").Cells(18, 1).Value
If NBBASES < 9 Then MAJCIBLES.CheckBox8.Visible = True

If NBBASES < 10 Then MAJCIBLES.CheckBox9.Caption = Sheets("TRAITEMENT").Cells(19, 1).Value
If NBBASES < 10 Then MAJCIBLES.CheckBox9.Visible = True

If NBBASES < 11 Then MAJCIBLES.CheckBox10.Caption = Sheets("TRAITEMENT").Cells(20, 1).Value
If NBBASES < 11 Then MAJCIBLES.CheckBox10.Visible = True

If NBBASES < 12 Then MAJCIBLES.CheckBox11.Caption = Sheets("TRAITEMENT").Cells(21, 1).Value
If NBBASES < 12 Then MAJCIBLES.CheckBox11.Visible = True

If NBBASES < 13 Then MAJCIBLES.CheckBox12.Caption = Sheets("TRAITEMENT").Cells(22, 1).Value
If NBBASES < 13 Then MAJCIBLES.CheckBox12.Visible = True

If NBBASES < 14 Then MAJCIBLES.CheckBox13.Caption = Sheets("TRAITEMENT").Cells(23, 1).Value
If NBBASES < 14 Then MAJCIBLES.CheckBox13.Visible = True

If NBBASES < 15 Then MAJCIBLES.CheckBox14.Caption = Sheets("TRAITEMENT").Cells(24, 1).Value
If NBBASES < 15 Then MAJCIBLES.CheckBox14.Visible = True

If NBBASES < 16 Then MAJCIBLES.CheckBox15.Caption = Sheets("TRAITEMENT").Cells(25, 1).Value
If NBBASES < 16 Then MAJCIBLES.CheckBox15.Visible = True

If NBBASES < 17 Then MAJCIBLES.CheckBox16.Caption = Sheets("TRAITEMENT").Cells(26, 1).Value
If NBBASES < 17 Then MAJCIBLES.CheckBox16.Visible = True

If NBBASES < 18 Then MAJCIBLES.CheckBox17.Caption = Sheets("TRAITEMENT").Cells(27, 1).Value
If NBBASES < 18 Then MAJCIBLES.CheckBox17.Visible = True

If NBBASES < 19 Then MAJCIBLES.CheckBox18.Caption = Sheets("TRAITEMENT").Cells(28, 1).Value
If NBBASES < 19 Then MAJCIBLES.CheckBox18.Visible = True

End Sub

Là je n'ai pas d'erreur mais ça ne fait absolument pas ce que j'attend : seul le nom de la dernière base listée apparait. Les chexkbox avant n'apparaissent pas et les check boxs après apparaissent sans nom

Exemple : j'ai 8 bases. Les 7 premiers checkbox n'apparaissent pas. Le 8ème apparait avec le nom de la 8 ème base. Les 10 chekbox restant apparaissent mais sans nom.

Si quelqu'un a une idée, je suis preneur.

Je joins le fichier avec la deuxième version de code...

Gilles
 

Pièces jointes

  • test usf checkbox.xlsm
    87.1 KB · Affichages: 57

laurano

XLDnaute Junior
Re : Faire référence à une checkbox

petite précision : dans le fichier que j'ai joint, j'ai supprimé des colonnes qui suivaient dans le tableau où il y avait le nom des bases. de coup la formule

NBBASES = Sheets("TRAITEMENT").Range("A10").CurrentRegion.Ro ws.Count - 2

n'est plus correcte mais doit être

NBBASES = Sheets("TRAITEMENT").Range("A10").CurrentRegion.Ro ws.Count - 1
Ca ne change rien au problème mais je préfère le préciser, histoire que vous ne perdiez pas de temps sur cette coquille
 

pierrejean

XLDnaute Barbatruc
Re : Faire référence à une checkbox

Bonjour laurano

Teste:

Code:
Private Sub UserForm_Activate()
For n = 10 To Sheets("TRAITEMENT").Range("A65536").End(xlUp).Row
  Controls("CheckBox" & n - 9).Visible = True
  Controls("CheckBox" & n - 9).Caption = Sheets("TRAITEMENT").Range("A" & n)
Next n
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Faire référence à une checkbox

Bonjour Laurano,

peut-être comme ça :
Code:
Private Sub UserForm_Activate()
Dim NBBASES As Integer
 
NBBASES = Sheets("TRAITEMENT").Range("A10").CurrentRegion.Rows.Count - 1
For i = 1 To NBBASES
    With MAJCIBLES.Controls("CheckBox" & i)
        .Caption = Sheets("TRAITEMENT").Cells(10 + i, 1).Value
        .Visible = True
    End With
Next i
End Sub

[Édition]
Bonjour PierreJean on s'est croisé.
 

Statistiques des forums

Discussions
312 241
Messages
2 086 526
Membres
103 242
dernier inscrit
Patoshick