Function Val_Filtres(Emplacement_filtre As Range) As String
'Feuille -> la feuille du filtre à étudier
'Emplacement_filtre -> premiere cellule du filtre actif
Dim CritFiltres As String
Dim N_ligne_du_filtre, N_colonne_du_filtre As String
Dim c, i As Byte
Dim CoupureDate As Integer
Application.Volatile
Val_Filtres = ""
CritFiltres = ""
'N_Ligne_du_Filtre -> N° de la ligne surlaquelle le filtre est activé
N_ligne_du_filtre = Emplacement_filtre.Row
'N_colonne_du_Filtre -> N° de la colonne surlaquelle le filtre est activé
N_colonne_du_filtre = Emplacement_filtre.Column
With Sheets(Emplacement_filtre.Worksheet.Name).AutoFilter
For c = 1 To .Filters.Count
With .Filters(c)
If .On Then
'Formatage des dates
If IsDate(Sheets(Emplacement_filtre.Worksheet.Name).Range("A1").Offset(N_ligne_du_filtre, N_colonne_du_filtre + c - 2).Value) Then
For i = 1 To Len(.Criteria1)
If (Mid(.Criteria1, i, 1)) <> "=" And (Mid(.Criteria1, i, 1)) <> "<" And (Mid(.Criteria1, i, 1)) <> ">" Then
CoupureDate = i - 1
Exit For
End If
Next i
If CritFiltres <> "" Then
CritFiltres = CritFiltres & vbLf & Sheets(Emplacement_filtre.Worksheet.Name).Range("A1").Offset(N_ligne_du_filtre - 1, N_colonne_du_filtre + c - 2) & " : " & Left$(.Criteria1, CoupureDate) & FormatDateTime(Right$(.Criteria1, Len(.Criteria1) - CoupureDate), 2)
Else: CritFiltres = Sheets(Emplacement_filtre.Worksheet.Name).Range("A1").Offset(N_ligne_du_filtre - 1, N_colonne_du_filtre + c - 2) & " : " & Left$(.Criteria1, CoupureDate) & FormatDateTime(Right$(.Criteria1, Len(.Criteria1) - CoupureDate), 2)
End If
If .Operator Then
CritFiltres = CritFiltres & Choose(.Operator, " Et ", " Ou ")
For i = 1 To Len(.Criteria2)
If (Mid(.Criteria2, i, 1)) <> "=" And (Mid(.Criteria2, i, 1)) <> "<" And (Mid(.Criteria2, i, 1)) <> ">" Then
CoupureDate = i - 1
Exit For
End If
Next i
CritFiltres = CritFiltres & Left$(.Criteria2, CoupureDate) & FormatDateTime(Right$(.Criteria2, Len(.Criteria2) - CoupureDate), 2)
End If
Else:
If CritFiltres <> "" Then
CritFiltres = CritFiltres & vbLf & Sheets(Emplacement_filtre.Worksheet.Name).Range("A1").Offset(N_ligne_du_filtre - 1, N_colonne_du_filtre + c - 2) & " : " & .Criteria1
Else: CritFiltres = Sheets(Emplacement_filtre.Worksheet.Name).Range("A1").Offset(N_ligne_du_filtre - 1, N_colonne_du_filtre + c - 2) & " : " & .Criteria1
End If
If .Operator Then
CritFiltres = CritFiltres & Choose(.Operator, " Et ", " Ou ")
CritFiltres = CritFiltres & .Criteria2
End If
End If
End If
End With
Next
End With
Val_Filtres = CritFiltres
End Function