Boucle sur checkbox

Bonjour à toutes et à tous,

Je bloque sur une problématique, à savoir boucler sur certaines checkbox de mon code et non sur toutes. En fait, j'ai 37 checkbox et j'aimerai que mon code ne boucle que sur les 33 premières.

Si quelqu'un a une solution je suis preneur, merci d'avance :)

Voici mon code :

Private Sub valider_picking_Click()
Workbooks("Outil Controle 2022.xlsm").Activate

Application.ScreenUpdating = False

Dim vartab(0, 20) As Variant
Dim cvide As Integer
'première cellule vide
cvide = Sheets("bdd_picking").Cells(Rows.Count, 1).End(xlUp).Row + 1

Dim L As Byte
Dim Ctrl As Control
Dim datet As Date
datet = Format(Now, "dd/mm/yyyy")
Dim hpick As Date
hpick = Format(Now, "hh:nn:ss")
Dim ii As Long
Dim chk As Boolean
Dim cle As String, valeurKO As String, chkNom As String

If Me.MultiPage1.Pages(0).Enabled = True Then

    If Me.Ass_produit = "" Or Me.Ass_com = "" Or Me.ass_preco = "" Then
    MsgBox "Merci de compléter la conclusion, le type de produit ainsi que les préconisations"
    Exit Sub
    End If

    For Each Ctrl In Picking.MultiPage1.Pages(0).Controls
    If TypeOf Ctrl Is MSForms.CheckBox Then
        If Ctrl = True Then
        cle = cvide - 1

        vartab(0, 0) = cle
        vartab(0, 1) = Me.nom_manager.Text
        vartab(0, 2) = Me.nom_collaborateur.Text
        vartab(0, 3) = Me.num_sinistre.Value
        vartab(0, 4) = Me.perimetre.Text
        vartab(0, 5) = Ctrl.Tag
        vartab(0, 6) = Ctrl.Caption

        chkNom = Ctrl.Name
        Traitement chkNom, valeurKO
        vartab(0, 7) = valeurKO

        vartab(0, 8) = Me.Conclusions.Text
        vartab(0, 9) = Me.Ass_com.Text ' a adapter
        vartab(0, 10) = Me.ass_preco.Text ' a adapter
        vartab(0, 11) = datet
        vartab(0, 12) = Environ("Username")
        vartab(0, 13) = Me.grand_compte_liste.Text
        vartab(0, 14) = "1"
        vartab(0, 15) = Me.type_sinistre_liste.Text
        vartab(0, 16) = Me.num_sinistre & "-" & hpick
            If vartab(0, 16) = Sheets("bdd_picking").Cells(cvide - 1, 17).Value Then
            NBRDOSS = 0
            Else: NBRDOSS = 1
            End If
        vartab(0, 17) = NBRDOSS
        vartab(0, 18) = Me.Ass_produit.Text

        Sheets("bdd_picking").Cells(cvide, 1).Resize(1, 19) = vartab

        chk = chk + Ctrl.Value

        cvide = cvide + 1
        End If

    End If
Next Ctrl

    If chk = False Then

     cle = cvide - 1
        vartab(0, 0) = cle
        vartab(0, 1) = Me.nom_manager.Text
        vartab(0, 2) = Me.nom_collaborateur.Text
        vartab(0, 3) = Me.num_sinistre.Value
        vartab(0, 4) = Me.perimetre.Text
        vartab(0, 5) = "Gestion adéquate"
        vartab(0, 6) = "Gestion adéquate"
        vartab(0, 7) = "Gestion adéquate"
        vartab(0, 8) = "DOSSIER CONFORME"  ' a adapter
        vartab(0, 9) = Me.Ass_com.Text ' a adapter
        vartab(0, 10) = Me.ass_preco.Text ' a adapter
        vartab(0, 11) = datet
        vartab(0, 12) = Environ("Username")
        vartab(0, 13) = Me.grand_compte_liste.Text
        vartab(0, 14) = "1"
        vartab(0, 15) = Me.type_sinistre_liste.Text
        vartab(0, 16) = Me.num_sinistre & "-" & hpick
            If vartab(0, 16) = Sheets("bdd_picking").Cells(cvide - 1, 17).Value Then
            NBRDOSS = 0
            Else: NBRDOSS = 1
            End If
        vartab(0, 17) = NBRDOSS
        vartab(0, 18) = Me.Ass_produit.Text

        Sheets("bdd_picking").Cells(cvide, 1).Resize(1, 19) = vartab

    cvide = cvide + 1
    End If

End If

Call pickingmemecolla

Bonjour matimatfr

Ont elles un numéro de 1 à 37 (CheckBox1, Checkbox2, etc..)

Si oui, il suffit de faire le test sur ce numéro

A+

Bonjour,

Merci de votre retour.

Oui elles sont numérotées correctement (1 à 37). C'est le problème de faire le test sur chacune d'elles que j'ai du mal à résoudre, peut être que je me complexifie trop le problème, mais je bloque.

Re,

Vous utilisez déjà une boucle sur vos contrôle

Sub Exemple()
  Dim NumChk As Integer
  For Each ctrl In Picking.MultiPage1.Pages(0).Controls
    If TypeOf ctrl Is MSForms.CheckBox Then
      ' 1 chiffre ou 2 chiifres ?
      If Len(ctrl.Name) = Len("CheckBox0") Then
        NumChk = Right(ctrl.Name, 1)
      Else
        NumChk = Right(ctrl.Name, 2)
      End If
      If NumChk <= 33 Then
        ' Procédure à mettre ici
      End If
    End If
  Next ctrl
End Sub

A+

Effectivement je me prenais bien la tête, alors que la solution était simple.

Merci en tout cas, cela fonctionne très bien comme ça :)

Bonne journée

Rechercher des sujets similaires à "boucle checkbox"