T
Thierry
Guest
Je positionne ci-dessous la macro que j'utilise pour rechercher les mois dans une feuille Opération (Mvts). Le but de cette macro est de dresser une liste de tous les mois utilisés dans cette feuille, en sachant qu'il y a au moins une opération par mois, j'ai trouvé 'sage' de dresser une liste automatique du premier jour au dernier jour...
Cette liste sert ensuite de liste déroulante pour sélectionner la liste des opérations d'un mois désiré afin de les imprimer...
Le problème est le suivant :
Cette macro fonctionne la première fois seulement, le fait de nommer la plage fonctionne une fois parfaitement, et ensuite place R2C2... en zone au lieu de $B$2 ...
Ce n'est pas la première fois que j'utilise ce code, mais c'est la première fois que je n'arrive pas à le débugger... J'ai même poussé le bouchon en détruisant la feuille, et en créant une nouvelle, mais c'est pareil (évidemment, habituellement, la macro est bcp plus courte, puisque je ne fais que supprimer le nom, lui affecté une nouvelle plage, et l'insérer)
Si quelqu'un peut m'aider...
Merci d'avance
Sub ListeMois()
'
'
Dim PlageMois As Variant
Dim LgnEndMois As Variant
Dim PlgMois As Variant
Windows("Cpte.xls").Activate
Sheets("Rv").Visible = True
Sheets("Rv").Select
DateDeb = Range("PeriodeDebut")
Windows("Cpte.xls").Activate
Sheets("Mvts").Visible = True
Sheets("Mvts").Select
On Error Resume Next
ActiveSheet.ShowAllData
'Aller à la dernière ligne en B et retourner la valeur
Range("B16384").Select
Selection.End(xlUp).Select
DateFin = ActiveCell.Value
Sheets("MoisValides").Visible = True
Application.DisplayAlerts = False
Sheets("MoisValides").Delete
Sheets("Rv").Select
Sheets.Add
ActiveSheet.Name = "MoisValides"
Columns("D:IV").Select
Selection.EntireColumn.Hidden = True
Sheets("MoisValides").Select
Range("A1") = DateDeb
Range("C1") = DateFin
Range("B2") = DateDeb
'Génère la série...
Range("B2:B16384").DataSeries _
xlColumns, Type:=xlChronological, Date:=xlMonth, Stop:=DateFin
'Tri les dates par ordre décroissant
Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Met à jour la liste des valeurs mois
ActiveWorkbook.Names("chpDatesListes").Delete
Range("B16384").Select
Selection.End(xlUp).Select
LgnEnd = ActiveCell.Row
PlageMois = "=MoisValides!R2C2:R" & LgnEnd & "C2 "
ActiveWorkbook.Names.Add Name:="chpDatesListes", RefersToR1C1:=PlageMois
End Sub
Cette liste sert ensuite de liste déroulante pour sélectionner la liste des opérations d'un mois désiré afin de les imprimer...
Le problème est le suivant :
Cette macro fonctionne la première fois seulement, le fait de nommer la plage fonctionne une fois parfaitement, et ensuite place R2C2... en zone au lieu de $B$2 ...
Ce n'est pas la première fois que j'utilise ce code, mais c'est la première fois que je n'arrive pas à le débugger... J'ai même poussé le bouchon en détruisant la feuille, et en créant une nouvelle, mais c'est pareil (évidemment, habituellement, la macro est bcp plus courte, puisque je ne fais que supprimer le nom, lui affecté une nouvelle plage, et l'insérer)
Si quelqu'un peut m'aider...
Merci d'avance
Sub ListeMois()
'
'
Dim PlageMois As Variant
Dim LgnEndMois As Variant
Dim PlgMois As Variant
Windows("Cpte.xls").Activate
Sheets("Rv").Visible = True
Sheets("Rv").Select
DateDeb = Range("PeriodeDebut")
Windows("Cpte.xls").Activate
Sheets("Mvts").Visible = True
Sheets("Mvts").Select
On Error Resume Next
ActiveSheet.ShowAllData
'Aller à la dernière ligne en B et retourner la valeur
Range("B16384").Select
Selection.End(xlUp).Select
DateFin = ActiveCell.Value
Sheets("MoisValides").Visible = True
Application.DisplayAlerts = False
Sheets("MoisValides").Delete
Sheets("Rv").Select
Sheets.Add
ActiveSheet.Name = "MoisValides"
Columns("D:IV").Select
Selection.EntireColumn.Hidden = True
Sheets("MoisValides").Select
Range("A1") = DateDeb
Range("C1") = DateFin
Range("B2") = DateDeb
'Génère la série...
Range("B2:B16384").DataSeries _
xlColumns, Type:=xlChronological, Date:=xlMonth, Stop:=DateFin
'Tri les dates par ordre décroissant
Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Met à jour la liste des valeurs mois
ActiveWorkbook.Names("chpDatesListes").Delete
Range("B16384").Select
Selection.End(xlUp).Select
LgnEnd = ActiveCell.Row
PlageMois = "=MoisValides!R2C2:R" & LgnEnd & "C2 "
ActiveWorkbook.Names.Add Name:="chpDatesListes", RefersToR1C1:=PlageMois
End Sub