Sub Filtrage()
Dim xrg As Range, t1(1 To 2), t2(1 To 2), s$
'Adapter le range xrg au contexte
Set xrg = ActiveSheet.Range("$A$3:$L$500")
'Premier critère
s = [nomprenom].Offset([nomprenom].Value + 1)
If s = [AucunFiltre] Then
t1(1) = Empty
t1(2) = Empty
xrg.AutoFilter Field:=9
Else
t1(1) = CStr(Val(Mid(s, InStr(s, "(") + 1)))
t1(2) = CStr(Val(Mid(s, InStr(s, "et") + 2)))
xrg.AutoFilter Field:=9, Criteria1:=t1, Operator:=xlFilterValues
End If
'Deuxième critère
s = [vuefiltre].Offset([vuefiltre].Value + 1)
If s = [AucunFiltre] Then
t1(1) = Empty
t1(2) = Empty
xrg.AutoFilter Field:=11
Else
t2(1) = Trim(Mid(s, InStr(s, "(") + 1))
t2(1) = Trim(Left(t2(1), InStr(t2(1), "et") - 1))
t2(2) = Trim(Mid(s, InStr(s, "et") + 2))
t2(2) = Trim(Left(t2(2), Len(t2(2)) - 1))
xrg.AutoFilter Field:=11, Criteria1:=t2, Operator:=xlFilterValues
End If
End Sub
bonjour Sep,Kingfadhel
avec filtre élaboré
code module2
Sep
c'est un exemple avec le filtre élaboré,bien mieux que autofiltrr
si cela t'intéresse je continue autrement non
Sub Filtrage()
Dim xrg As Range, T, numCol, s$, i&, nbrCritVide&
'Adapter le range xrg au contexte
Set xrg = ActiveSheet.Range("$A$3:$L$500")
For i = 1 To Feuil2.Range("a2").CurrentRegion.Columns.Count / 2
s = Range("Crit" & i)(Range("index" & i))
numCol = Range("Colonne_Filtre" & i).Value
numCol = Range(numCol & 1).Column
If Len(s) = 0 Then
xrg.AutoFilter Field:=numCol
Else
T = Split(s, ";")
xrg.AutoFilter Field:=numCol, Criteria1:=T, Operator:=xlFilterValues
End If
Next i
End Sub