'### Constante à adapter ###
Const NB_DATES As Long = 3 'Borne limitant la dimension du tableau (à adapter)
'###########################
Dim T(1 To NB_DATES) 'Déclaration du tableau avec une portée niveau module
Private Sub DTPicker1_CloseUp()
Dim cpt&
'---
Do Until T(NB_DATES) <> ""
cpt& = cpt& + 1
If T(cpt&) = "" Then
T(cpt&) = DTPicker1.Value
Exit Do
End If
Loop
End Sub
Private Sub CommandButton1_Click()
Dim SL As Object
Dim i&
Dim A$
Dim R As Range
'--- Trie les éléments du tableau du plus petit au plus ---
'--- grand et affecte les éléments dans une SortedList ---
Set SL = CreateObject("System.Collections.SortedList")
On Error Resume Next 'Pour éviter les doublons
For i& = 1 To UBound(T)
If T(i&) <> "" Then SL.Add T(i&), T(i&)
Next i&
Err.Clear
On Error GoTo 0
'### Exemples d'utilisation ###
If SL.Count > 0 Then
'--- Affichage des éléments de la SortedList dans une MsgBox ---
For i& = 0 To SL.Count - 1
A$ = A$ & SL.GetKey(i&) & vbLf
Next i&
MsgBox A$, , "Nombre de dates limité à " & NB_DATES
'--- Inscription des éléments de la SortedList dans une feuille ---
Set R = Sheets("test").[a1]
For i& = 0 To SL.Count - 1
R = SL.GetKey(i&)
Set R = R.Offset(1, 0)
Next i&
End If
'##############################
End Sub