Macro Création de filtre automatique sur onglet actif

Bonjour à tous,

Je souhaite créer une Macro de filtre automatique sur le fichier en PJ qui soit actif sur l'onglet en cours d'utilisation.

Pour être plus claire, je crée chaque jour une copie de l'onglet "extraction" qui est renommer de la date du jour et j'ai besoin que mes filtres soient actif sur l'onglet créé à la date du jour.

je ne suis pas très sûr du code que j'ai initié et je veux bien votre avis sur le sujet, ci-dessous la liste des filtre nécessaire :

  1. sur la colonne L " exclusion" j'ai besoin de filtrer le "oui"
  2. sur la colonne N "Différence Stock Jonage - Cdes ventes" j'ai besoin d'un filtre sur la couleur : image
  3. sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0
  4. et enfin sur la colonne B "Marque" je besoin de filtrer de A-Z

Ci-dessous le code que j'ai créé :

Sub Créa_Filtre()
'
' Créa_Filtre Macro
'

'
    Range("A6:Q6").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$6:$Q$4286").AutoFilter Field:=12, Criteria1:="OUI"
    ActiveSheet.Range("$A$6:$Q$4286").AutoFilter Field:=14, Criteria1:=RGB(255 _
        , 242, 204), Operator:=xlFilterCellColor
    ActiveSheet.Range("$A$6:$Q$4286").AutoFilter Field:=5, Criteria1:=Array( _
        "1 022,", "1 036,", "1 042,", "1 076,", "1 155,", "1 164,", "1 202,", "1 300,", _
        "1 380,", "1 458,", "1 469,", "1 533,", "1 631,", "1 697,", "1 780,", "1 801,", "1,", _
        "10 000,", "10,", "100,", "103,", "11,", "112,", "12 736,", "12 748,", "12 839,", "12,", _
        "121,", "122,", "123,", "13 243,", "13,", "131,", "138,", "14,", "143,", "144,", "145,", _
        "148,", "15 311,", "15,", "167,", "17,", "170,", "176,", "177,", "18,", "19,", "2 136,", _
        "2 293,", "2 533,", "2 853,", "2 889,", "2 975,", "2,", "20 086,", "20,", "200,", "21,", _
        "213,", "222,", "227,", "23,", "234,", "24,", "244,", "25,", "253,", "26 456,", "26,", _
        "262,", "268,", "27,", "274,", "28,", "282,", "288,", "29 016,", "29,", "3 000,", _
        "3 974,", "3,", "300,", "308,", "309,", "32,", "34 612,", "36 547,", "36,", "368,", _
        "384,", "4 000,", "4 114,", "4 122,", "4 518,", "4 787,", "4 873,", "4 941,", "4,", _
        "40,", "41,", "421,", "424,", "46,", "464,", "49,", "490,", "5 000,", "5 022,", "5 478,", _
        "5,", "501,", "502,", "51,", "52,", "520,", "54,", "58,", "6 115,", "6 859,", "6 925,", _
        "6,", "60,", "616,", "66,", "7 040,", "7 090,", "7 230,", "7,", "708,", "738,", "785,", _
        "796,", "8 148,", "8 500,", "8,", "80,", "805,", "808,", "81,", "82,", "83,", "87 851,", _
        "9 410,", "9 613,", "90,", "903,", "91,", "92,", "94,"), Operator:=xlFilterValues

    ActiveWorkbook.Worksheets("extraction").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("extraction").AutoFilter.Sort.SortFields.Add2 Key:= _
        Range("B6:B4286"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("extraction").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    End With
End Sub

Je vous joint également le fichier d'origine.

J'espère avoir correctement formulé ma demande et je vous remercie par avance de votre aide.

Eddy

Bonjour,

Pour la création du nouvel onglet:

Sub Créa_Onglet_Date()
    Application.ScreenUpdating = False
    On Error Resume Next
    Sheets(Day(Date) & " " & Month(Date) & " " & Year(Date)).Delete 'on détruit la feuille du jour si elle à déjà été créée
    Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Day(Date) & " " & Month(Date) & " " & Year(Date) 'Création nouvelle feuille
    Set f1 = Sheets("extraction") 'on attribue la variable f1 à la feuille "extraction"
    Set f2 = Sheets(ActiveSheet.Name) 'on attribue la variable f2 à la nouvelle feuille
    f1.Cells.Copy f2.Range("A1") 'on sélectionne l'ensemble des cellules de f1 que l'on copie directement dans f2
    ActiveSheet.Shapes.Range(Array("Button 1", "Button 2")).Delete 'on supprime les boutons
    Rows(1).Hidden = True 'on masque la première ligne
End Sub

par contre, pour le filtrage, je ne comprends pas tout:

  1. sur la colonne L " exclusion" j'ai besoin de filtrer le "oui" OK
  2. sur la colonne N "Différence Stock Jonage - Cdes ventes" j'ai besoin d'un filtre sur la couleur : OK (ou pour toutes les valeurs <0)
  3. sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0, c'est sûr ça???
  4. et enfin sur la colonne B "Marque" je besoin de filtrer de A-Z, ne s'agit -il pas plutôt d'un tri sur cette colonne.

En attente de votre retour

Cdlt

Bonsoir Causse, Arturo83,

Pour ton filtrage sur la feuille active. Nouvel onglet par exemple.

Changer, après avoir renseignée le nom de la feuille active par une ligne dans la macro présentée.

ActiveWorkbook.Worksheets("extraction")

par

Sht = ActiveSheet.Name

ActiveWorkbook.Worksheets(Sht)

Et cette variable portant le nom de la feuille devra remplacer dans ton code le texte "extraction"

Bonjour Arturo83, X Cellus,

"par contre, pour le filtrage, je ne comprends pas tout:

  1. sur la colonne L " exclusion" j'ai besoin de filtrer le "oui" OK
  2. sur la colonne N "Différence Stock Jonage - Cdes ventes" j'ai besoin d'un filtre sur la couleur : OK (ou pour toutes les valeurs <0)
  3. sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0, c'est sûr ça??? - Oui c'est ça
  4. et enfin sur la colonne B "Marque" je besoin de filtrer de A-Z, ne s'agit -il pas plutôt d'un tri sur cette colonne." oui c'est trier de A à Z

Merci X Cellus ;)

Eddy

Rechercher des sujets similaires à "macro creation filtre automatique onglet actif"