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