Bonjour,

J'ai voulu faire une double boucle pour supprimer les éléments d'une collection. La suppression d'un élément d'une collection réduit automatiquement le nombre d'éléments et les numéros d'index et peut entraîne une erreur.

Après avoir réfléchis à une solution et n'ayant rien trouvé, j'ai contourner le problème avec un "On Error Resume Next".

Auriez-vous une solution plus élégante à me suggérer ?

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
On Error Resume Next
 
With ReportingPeriodCollection
    For i = .Count To 1 Step -1
        For j = .Count To 1 Step -1
            If i <> j And .Item(i).PeriodYear = .Item(j).PeriodYear Then
                Select Case .Item(i).PeriodYear
                    Case Is <> YearEndPeriod
                        If .Item(i).AnnualFactor = 1 Then
                        .Remove (j)
                        Else
                        .Remove (i)
                        End If
                    Case YearEndPeriod
                        If .Item(i).AnnualFactor > .Item(j).AnnualFactor Then
                        .Remove (i)
                        Else
                        .Remove (j)
                        End If
                End Select
            Cpt = Cpt + 1
            End If
         Next j
    Next i
End With