Un moyen facile:
Private Sub UnchkAllBox()
For i = 3 to 253
Controls("Checkbox" & i).Value = False
Next i
End Sub
De cette façon, les noms des cases à cocher sont très importants. Utilisez-le seulement pour cocher vos cases.
Autre façon:
Private Sub UnchkAllBox2()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CheckBox" Then Ctrl.Value = False
Next Ctrl
End Sub
Dans ce cas, vous n'avez pas concerner les noms. Cependant, il désélectionnera toutes les cases de votre formulaire.
Les deux méthodes mentionnées supposent que toutes les cases à cocher ont été placées dans un formulaire utilisateur. Pour les cases à cocher dans une feuille de calcul, Excel les stocke dans une collection OLEObjects au lieu de Controls. Par conséquent, le code devrait être réécrit comme ci-dessous.
Private Sub UnChkAllBox()
For i = 1 To 5
OLEObjects("CheckBox" & i).Object.Value = False
Next i
End Sub
Et
Private Sub UnChkAllBox2()
Dim Obj As OLEObject
For Each Obj In Me.OLEObjects
If TypeOf Obj.Object Is MSForms.CheckBox Then Obj.Object.Value = False
Next Obj
End Sub
deux donnent une erreur: Première voie: "Erreur de compilation: Sub ou Fonction non définie". Deuxième manière: "Erreur de compilation: utilisation incorrecte du mot-clé Me" – perbrethil
Il s'agit en effet d'une case activeX, j'ai mélangé des choses en faisant 2 choses en même temps. mes excuses – perbrethil