Bonjour à tous. J'ai besoin de votre soutien. J'ai utilisé ce code partagé par @mapomme pour filtrer les données de mon tableau de la feuille "identité" sur la feuille "listealpha" mais rien ne se passe quand je fais le choix au niveau de la liste déroulante cellule "F5" de la feuille"listealpha".
J'ai un peu modifié la structure de l'entête car la colonne Sexe se trouve maintenant en deuxième position et non en cinquième.
Sub FiltrerTrier()
Dim t, Critere As String, n&, i&, j&
On Error GoTo FIN
Application.EnableEvents = False
Application.ScreenUpdating = False
Critere = Replace(Left(Range("genre"), 1), "T", "") & "*"
t = Sheets("données").ListObjects(1).DataBodyRange.Columns("a:f")
For i = 1 To UBound(t)
If UCase(t(i, 6)) Like Critere Then n = n + 1: For j = 2 To UBound(t, 2): t(n, j) = t(i, j): Next
Next i
With Sheets("liste").ListObjects(1)
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
If Not n = 0 Then
.Range(2, 1).Resize(n, UBound(t, 2)) = t
.Range.Sort key1:=.ListColumns(2), order1:=xlAscending, Header:=xlYes, key2:=.ListColumns(3), order2:=xlAscending
End If
End With
FIN:
Application.EnableEvents = True: Beep
End Sub.
J'ai un peu modifié la structure de l'entête car la colonne Sexe se trouve maintenant en deuxième position et non en cinquième.
Sub FiltrerTrier()
Dim t, Critere As String, n&, i&, j&
On Error GoTo FIN
Application.EnableEvents = False
Application.ScreenUpdating = False
Critere = Replace(Left(Range("genre"), 1), "T", "") & "*"
t = Sheets("données").ListObjects(1).DataBodyRange.Columns("a:f")
For i = 1 To UBound(t)
If UCase(t(i, 6)) Like Critere Then n = n + 1: For j = 2 To UBound(t, 2): t(n, j) = t(i, j): Next
Next i
With Sheets("liste").ListObjects(1)
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
If Not n = 0 Then
.Range(2, 1).Resize(n, UBound(t, 2)) = t
.Range.Sort key1:=.ListColumns(2), order1:=xlAscending, Header:=xlYes, key2:=.ListColumns(3), order2:=xlAscending
End If
End With
FIN:
Application.EnableEvents = True: Beep
End Sub.