Bonsoir thev,
je me suis permis de modifier ton code pour arriver à ça :
Private Sub CommandButton2_Click()
Dim plage_filtrée As Range, plage As Range, ligne As Range
Dim dic_attestations As Object
Dim i As Integer
Dim élément As Variant
Dim service1 As String, service2 As String
Dim date_création As Date, date_fin_validité As Date
Dim T
Set plage_filtrée = Sheets("Liste").Range("A2").CurrentRegion.SpecialCells(xlCellTypeVisible)
Set dic_attestations = CreateObject("Scripting.Dictionary")
i = 0
' Chargement des lignes filtrées dans un dictionnaire
For Each ligne In plage_filtrée.Rows
If i > 0 Then dic_attestations(i) = ligne.Value
i = i + 1
Next ligne
' Mise des éléments du dictionnaire dans un tableau
i = 0
ReDim T(1 To dic_attestations.Count, 1 To 4)
For Each élément In dic_attestations.items
i = i + 1
For j = 1 To 4
T(i, j) = élément(1, j)
Next
Next élément
'MsgBox UBound(T, 1) & " " & UBound(T, 2)
End Sub
Pas sûr que ce soit plus rapide que ma solution proposée initialement s'il y a de nombreuses lignes?
A+