Private Sub CommandButton2_Click()
Dim Ind As Integer, dLig As Long, sCrit As String, sCrit2
Dim TabCol As Variant, NumCol As Long
' Liste des colonnes à prendre en compte
TabCol = Split("A,B,G,H,I,J,K,R,T", ",")
' Avec la feuille active
With ActiveSheet
If ActiveSheet.AutoFilter.FilterMode = True Then ActiveSheet.ShowAllData
' Définir la plage à traiter
Set Rng = .Range("A6").CurrentRegion
' Déplacer la plage d'une ligne vers le bas et la redimensionner
Set Rng = Rng.Resize(Rng.Rows.Count - 1, Rng.Columns.Count).Offset(1, 0)
' Suis l'ordre des TextBox
For Ind = 1 To 9
' Préparer le critère de filtre
sCrit = ""
' Si le TextBox contient une valeur
If Me.Controls("Textbox" & Ind) <> "" Then
' Définir le numéro de colonen à traiter
NumCol = Range(TabCol(Ind - 1) & "1").Column
' Critère de filtre
sCrit = Me.Controls("Textbox" & Ind).Value
If NumCol = 1 Then
On Error Resume Next
sCrit2 = DateSerial(CInt(Mid(Me.Controls("Textbox" & Ind).Value, 7, 4)), CInt(Mid(Me.Controls("Textbox" & Ind).Value, 4, 2)), CInt(Mid(Me.Controls("Textbox" & Ind).Value, 1, 2))) 'Application.WorksheetFunction.DateValue(Me.Controls("Textbox" & Ind).Value)
If Err = 0 Then
Rng.AutoFilter Field:=NumCol, Criteria1:=Format(sCrit2, "dd/mm/yyyy")
Else
Me.Controls("Textbox" & Ind).Value = ""
End If
On Error GoTo 0
Else
Rng.AutoFilter Field:=NumCol, Criteria1:="*" & sCrit & "*"
End If
End If
Next Ind
End With
End Sub