1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Sub FiltrerTab()
Dim Montab As Variant
Dim x As Long, I As Long, k As Long
Dim varFiltre() As variant
On Error Resume Next
Application.ScreenUpdating = False
Montab = Range("a1:e" & Range("a65536").End(xlUp).Row)
x = 1
For I = 1 To UBound(Montab)
If InStr(Montab(I, 5), critere) <> 0 Then ' critere = sous-chaine à repérer
ReDim Preserve varFiltre(1 To 5, 1 To x)
For k = 1 To 5
varFiltre(k, x) = Montab(I, k)
Next k: x = x + 1: End If: Next I
varFiltre = InverseTab(varFiltre, 1)
Sheets(sheets.count).Range("A1").Resize(UBound(varFiltre, 1), UBound(varFiltre, 2)) = varFiltre
Erase Montab, varFiltre
Application.ScreenUpdating = True
End Sub
Function InverseTab(T, Optional Base As Byte = 0) 'Zon
'Base par défaut est à 0 mais si on est en base 1 lui donnner la valeur 1
Dim Temp() , I As Long, J As Long
ReDim Temp(Base To UBound(T, 2), Base To UBound(T))
For I = LBound(T, 2) To UBound(T, 2)
For J = LBound(T) To UBound(T)
Temp(I, J) = T(J, I)
Next J
Next I
InverseTab = Temp
End Function |
Partager