Bonjour,
J'étais partis avec les contrôles sur un UserForm et pas sur une feuille. Donc, pour des contrôles ActiveX, voici le code :
Private Sub CommandButton1_Click()
Dim OLECtrl As OLEObject
Dim CaseACocher As MSForms.CheckBox
Dim Combo As MSForms.ComboBox
'adapter le nom de la feuille
For Each OLECtrl In Worksheets("Feuil1").OLEObjects
'évite l'erreur
On Error Resume Next
'si l'objet OLE en cours n'est pas une case à
'cocher, une erreur est générée
Set CaseACocher = OLECtrl.Object
'et donc c'est un combobox ou le bouton
If Err.Number <> 0 Then
'si c'est un combobox, le choix est supprimé
'si c'est le bouton (ou tout autre contrôles)
'l'erreur est toujours gérée par le gestionnaire
Set Combo = OLECtrl.Object
Combo.ListIndex = -1
Else
'dans le cas où c'est bien une case à cocher
'elle est décochée
CaseACocher.Value = False
End If
Next
Set OLECtrl = Nothing
Set CaseACocher = Nothing
Set Combo = Nothing
End Sub
Pour les contrôles "Formulaire" voici le code :
Private Sub CommandButton1_Click()
Dim Ctrl As Shape
'adapter le nom de la feuille
For Each Ctrl In Worksheets("Feuil1").Shapes
'si c'est un contrôle "Formulaire"
If Ctrl.Type = 8 Then
'valeur à 0 (le choix des combobox est supprimé)
Ctrl.ControlFormat.Value = 0
End If
Next
Set Ctrl = Nothing
End Sub
Hervé.