Bonjour,

En effectuant des recherches sur Google, je suis tombé sur un fichier qui pourrait répondre à mes besoins.
Donc sur un feuille nommée BD, une suite de dates de A2 à Axx.
Je voudrai afficher sur une autre feuille, dans combobox1 l’année (sans doublon) ou ‘Tout',
et afficher dans combobox2 les mois triés sans doublons (en lettres) correspondants au choix de combobox1
ou bien ‘Tout’ tout pour prendre en compte tous les mois.
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
Option Explicit 'Dans module de feuille
Dim F As Worksheet, dm As Object, dy As Object, dl As Long, Tb, i As Long
Private Sub Worksheet_Activate()
   Set dy = CreateObject("Scripting.Dictionary")
   Set F = Worksheets("BD")
   dl = F.Range("A" & Rows.Count).End(xlUp).Row
   Tb = F.Range("A2:A" & dl).Value2
   dy("Tout") = ""
   For i = LBound(Tb) To UBound(Tb)
      If Not dy.Exists(Year(Tb(i, 1))) Then dy(Year(Tb(i, 1))) = ""
   Next i
   Me.ComboBox1.List = dy.Keys
End Sub
 
Private Sub ComboBox1_Change()
   Call CodeMois
   Set dm = CreateObject("Scripting.Dictionary")
   Set F = Worksheets("BD")
   Me.ComboBox2.Clear
 
   dl = F.Range("A" & Rows.Count).End(xlUp).Row
   Tb = F.Range("A2:A" & dl).Value2
   dm("Tout") = ""
 
   For i = LBound(Tb) To UBound(Tb)
   If Me.ComboBox1 = "Tout" Then
            If Not dm.Exists(Month(Tb(i, 1))) Then dm(sMois(Month(Tb(i, 1)))) = ""
Else
      If Year(Tb(i, 1)) = CLng(Me.ComboBox1.Value) Then
         If Not dm.Exists(Month(Tb(i, 1))) Then dm(sMois(Month(Tb(i, 1)))) = ""
      End If
End If
   Next i
  Me.ComboBox2.List = dm.Keys
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Option Explicit 'Dans module standard
Public sMois(1 To 12)
Sub CodeMois()
   sMois(1) = "Janvier": sMois(2) = "Février": sMois(3) = "Mars": sMois(4) = "Avril"
   sMois(5) = "Mai": sMois(6) = "Juin": sMois(7) = "juillet": sMois(8) = "Août"
   sMois(9) = "Septembre": sMois(10) = "Octobre": sMois(11) = "Novembre": sMois(12) = "Décembre"
End Sub
Je ne parviens pas à afficher les mois triés. En vous remerciant.