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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set wbm = wb.Worksheets(xf)
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.
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 :
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)
les variables déclarées :
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
Je mets le code complet au cas où :

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
merci d'avance pour votre aide