Dim OO As OLEObject, Formule As String, Champ As Long, Ligne As Long, Colonne As Long
With Sheets("Sheet1")
Formule = ""
Ligne = .Range("Titr").Row + 1
Colonne = .Range("Titr").Range("A1").Column
For Each OO In .OLEObjects
If OO.progID Like "Forms.CheckBox*" Then
If OO.Object.Value Then
Champ = Application.Match(OO.Object.Caption, .Range("Titr"), 0)
If Formule <> "" Then Formule = Formule & ","
Formule = Formule & .Cells(Ligne, Colonne + Champ - 1).Address(False, False) & "=""x"""
End If
End If
Next
If Formule = "" Then
AfficheTout
Else
Formule = "=OR(" & Formule & ")"
.Range("Crit").Range("A2").Formula = Formule
.Range("Liste[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("Crit"), Unique:=False
End If
End With
End Sub
Sub AfficheTout()
With Sheets("Sheet1")
If .FilterMode Then .ShowAllData
For Each OO In .OLEObjects
If OO.progID Like "Forms.CheckBox*" Then
If OO.Object.Value Then OO.Object.Value = False
End If
Next
End With
End Sub