Bonjour au forum,
Je tente d'enregistrer un filtre dans une feuille variable.
Le nom des feuilles est les mois de l'année, et les paramètres du filtre aussi
j' ai un message d'erreur du type l'indice n'appartient pas à la selection ici :
je cherche à récupérer le nom du mois (Février par exemple) en français pour définir le nom de la feuille (wbm) de destination de la copie du filtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set wbm = wb.Worksheets(xf)
la valeur de l' inputbox étant saisie en chiffre du genre 02/2012 pour le mois de Février.
voici le début du code :
les variables déclarées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub filtre_principal() Set wb = ThisWorkbook Set wbs = wb.Worksheets("CC2012") '-------------Définir la page du mois pour la copie du filtre smois = InputBox("Saisissez le mois", "Choix du mois", "") mois = CDate(smois) mois = Format(smois, "mm/yyyy") xx = CStr(mois) xx = Format(mois, "mm") Select Case mois Case Month(mois) = 1 xf = "Janvier" Case Month(mois) = 2 xf = "Février" Case xx = "03" xf = "Mars" Case xx = "04" xf = "Avril" Case xx = "05" xf = "Mai" End Select Set wbm = wb.Worksheets(xf)
Je mets le code complet au cas où :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Option Explicit Public wb As Workbook, wbs As Worksheet, wbm As Worksheet Public Plagefiltre As Range, PlageBase As Range, utile As Range, Zone As Range Public Message As String, lastl As Integer, smois As String, mois As Date Public cmptl As Long, xx As String, xf As String
merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 Sub filtre_principal() Set wb = ThisWorkbook Set wbs = wb.Worksheets("CC2012") '-------------Définir la page du mois pour la copie du filtre smois = InputBox("Saisissez le mois", "Choix du mois", "") mois = CDate(smois) mois = Format(smois, "mm/yyyy") xx = CStr(mois) xx = Format(mois, "mm") Select Case mois Case Month(mois) = 1 xf = "Janvier" Case Month(mois) = 2 xf = "Février" Case xx = "03" xf = "Mars" Case xx = "04" xf = "Avril" Case xx = "05" xf = "Mai" End Select Set wbm = wb.Worksheets(xf) wbs.Activate With wbs lastl = ActiveSheet.UsedRange.Rows.Count Set PlageBase = .Range(.Cells(1, 1), .Cells(1, 1)).End(xlDown).Resize(, 39) Set utile = .Range(.Cells(4, 1), .Cells(lastl, 39)) End With ' ------------effectuer le Tri principal Call Tri_principal '------------enlève les éventuels anciens filtres With PlageBase If wbs.FilterMode = True Then .AutoFilter End If '------------effectue le filtre .AutoFilter Field:=5, Criteria1:=Array("1", "2", "3", "="), Operator:=xlFilterValues .AutoFilter Field:=6, Criteria1:=Array("="), Operator:=xlFilterValues, Criteria2:=Array(1, mois) End With '-----------Affiche les colonnes groupées des feuilles wbs.Columns.Hidden = False wbm.Columns.Hidden = False '-----------Copie les lignes visibles du filtre Set Plagefiltre = utile.SpecialCells(xlCellTypeVisible) Plagefiltre.Copy wbm.Range("A5") With wbs .Columns("B:D").Hidden = True .Columns("L:N").Hidden = True .Columns("P:R").Hidden = True .Columns("Z:AJ").Hidden = True .Columns("AL:AN").Hidden = True End With With wbm .Columns("B:D").Hidden = True .Columns("L:N").Hidden = True .Columns("P:R").Hidden = True .Columns("Z:AJ").Hidden = True .Columns("AL:AN").Hidden = True End With![]()
Partager