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 :
- sur la colonne L " exclusion" j'ai besoin de filtrer le "oui"
- sur la colonne N "Différence Stock Jonage - Cdes ventes" j'ai besoin d'un filtre sur la couleur :
- sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0
- 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 SubJe 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 Subpar contre, pour le filtrage, je ne comprends pas tout:
- sur la colonne L " exclusion" j'ai besoin de filtrer le "oui" OK
- 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)
- sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0, c'est sûr ça???
- 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:
- sur la colonne L " exclusion" j'ai besoin de filtrer le "oui" OK
- 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)
- sur la colonne E "Qté sur commande vente" j'ai besoin d'un filtre <0, c'est sûr ça??? - Oui c'est ça
- 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