Valeurs uniques dans collection

Résolu
tonton33650 Messages postés 23 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 3 décembre 2008 - 13 juin 2007 à 12:03
tonton33650 Messages postés 23 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 3 décembre 2008 - 13 juin 2007 à 13:31
bonjour a tous

J'ai une question concernant les collections. Il me semblait qu'une collection pouvait contenir unquement les valeurs uniques qu'on lui ajoutait. Mais malheureusement ce n'est pas du tout cas.
Voici le code que j'ai tapé:

Code:

Dim Amort_Schedule As Range
Dim Ra, cells As Range
Dim All_years As New Collection
Dim lastrow As Integer
Dim Val_uniques As New Collection
Dim max_date As Date

Set Amort_Schedule = Range(Sheet3.cells(12, 2), Sheet3.cells(lastrow, 2))


        On Error Resume Next


            For Each cells In Amort_Schedule


                All_years.Add Year(CDate(cells.Value))
       
            Next


        On Error GoTo 0




For Each Item In All_years




        For Each Ra In Amort_Schedule
   
                If Year(CDate(Ra.Value)) = Item And CDate(Ra.Value) > LastDate Then
                    LastDate = CDate(Ra.Value)
                End If
           
        Next




        max_date = LastDate
   
        Val_uniques.Add CDate(max_date)
   
Next

Je cherche a obtenir, dans Val_uniques, uniquement les dernieres dates de chaque annee. Dans ma Amort_Schedule  j'ai une serie de date correspondant a des dates d'amortissement et je ne veux retenir aue les dernieres dates de chaque annee donc.
Ai-je oublie qqchose pour que ca marche, ou simplement la collection ne stocke pas les valuers de facon unique.

Merci pour votre aide

4 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 juin 2007 à 13:21
Oui, la clé doit être de type String :

Val_uniques.Add max_date, CStr(max_date)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 juin 2007 à 12:07
Salut,

pour stocker des valeurs uniques, il faut inclure ta valeur en tant que clé (second paramètre de la méthode Add de la collection).
Si une valeur "doublon" essaie de s'ajouter, tu auras une erreur. A toi de faire ta gestion d'erreur

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
tonton33650 Messages postés 23 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 3 décembre 2008
13 juin 2007 à 13:16
Salut Mortalino

Merci pour ta reponse,
J'ai donc substituer maderniere ligne de code par
Code:

Val_uniques.Add max_date, CDate(max_date)

Mais la j'ai une erruer de Run'Time error 13 : Type mismatch
As tu une idee de ou peut etre mon erreur??

Merci
0
tonton33650 Messages postés 23 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 3 décembre 2008
13 juin 2007 à 13:31
Pqrfait


Merci beaucoup pour ton aide
0
Rejoignez-nous