Filtrer et trier avec une macro

Bonjour,

comme à chaque fois que j'ai un soucis sous Excel je me tourne vers vous. Voici déjà les données.

https://www.excel-pratique.com/~files/doc/y8qEddata.xls

Voici ce que je souhaiterai obtenir dans le même classeur mais sur une autre feuille:

1-Filtrer par date. Afficher uniquement les données récentes supérieure à J-1 à 19h00

2- Trier sous 3 critères : 1= PC, 2=Machine, 3= Place

3 - Afficher dans cette ordre : numéro - place - PC - machine - date

Voici en gros ce que je souhaite obtenir:

https://www.excel-pratique.com/~files/doc/resultat.xls

Et le tout dans une macro ou de manière automatique, car les données de la première feuille changent tout le temps, mais pas les champs.

J'espère avoir été clair ?

Bonjour,

regarde le fichier joint, et appuie sur le bouton jaune

le code :

Sub filtre()
Range("A1:J" & [A65000].End(xlUp).Row).Name = "base"
[K1] = "date"
[K2] = ">" & CDate(Format(Date - 1, "dd/mm/yyyy") & "  19:00")
With Sheets("extraction")
    If .[A1] = "" Then _
    .[A1] = "numéro": .[B1] = "place": .[C1] = "PC": .[D1] = "Machine": .[E1] = "date"
    Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets( _
        "données").Range("K1:K2"), CopyToRange:=.Range("A1:E1"), Unique:=False
End With
[K1:K2].ClearContents
End Sub

Le fichier :

https://www.excel-pratique.com/~files/doc/predator_v1.zip

282-organisation.xlsm (81.71 Ko)

Merci beaucoup cette fonction permet de filtrer. Par contre j'aimerai bien comprendre en détail la macro. Mon fichier d'origine contient plus de colonnes que celui que je vous ai donné et j'ai donc des données dans la colonne K. J'ai essayé de remplacer K par O mais ça fonctionne pas. J'aimerai aussi pouvoir mettre le bouton dans une autre feuille.

Bonjour,

avec ce code, tu peux mettre ton bouton sur la feuille que tu désires, et le tableau pris en compte va de la colonne A à la colonne K :

Sub filtre()
With Sheets("données")
.Range("A1:K" & .[A65000].End(xlUp).Row).Name = "base"
.[IV1] = "date"
.[IV2] = ">" & CDate(Format(Date - 1, "dd/mm/yyyy") & "  19:00")
End With
With Sheets("extraction")
    If .[A1] = "" Then _
    .[A1] = "numéro": .[B1] = "place": .[C1] = "PC": .[D1] = "Machine": .[E1] = "date"
    Sheets("données").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets( _
        "données").Range("IV1:IV2"), CopyToRange:=.Range("A1:E1"), Unique:=False
End With
Sheets("données").[IV1:IV2].ClearContents
End Sub

Merci beaucoup, je vais regarder ça dans la matinée

C'est tout bon, merci encore.

Rechercher des sujets similaires à "filtrer trier macro"