Bonjour,
J'ai cru comprendre que tu souhaite faire une liste de validation pour le calendrier,
explications dans feuille "Listes"
vois si cela convient
Sub CreationListe()
Dim cL%, Ws As Worksheet
Application.ScreenUpdating = False
Set Ws = Sheets("Calendrier")
With Sheets("Listes")
.Columns(1).ClearContents
.Columns(2).Insert 'colonne temporaire
For cL = 3 To 47 Step 4
'-- filtre les colonnes --
Ws.Cells(1, cL) = "lib"
Ws.Range("ax2") = "=" & Cells(2, cL).Address(RowAbsolute:=False) & "<>""""" 'critère
Range(Ws.Cells(1, cL), Ws.Cells(40, cL)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Ws.Range("ax1:ax2"), CopyToRange:=.Range("a1"), Unique:=False
Ws.Cells(1, cL).ClearContents
.Range("a2:a" & .[a65000].End(xlUp).Row).Copy Destination:=.Range("b65000").End(xlUp)(2)
.Columns("a").ClearContents
Next cL
'--- liste sans doublons ---
.Range("a1,b1") = "Liste" 'en-tête
.Range("b1:b" & .[b65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("a1"), Unique:=True
.Columns(2).Delete
'--- tri ---
.Range("a2:a" & .[a65000].End(xlUp).Row).Sort _
Key1:=.Range("a2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub
Amicalement
Claude