Gestion d'une collection

J-Charles

XLDnaute Occasionnel
Bonjour à tous,

Sur une plage de cellules "Plage1", si une cellule est vide, j'alimente la collection "CollectMle" par la valeur de la cellule située à gauche sur la même ligne. Dans un autre onglet de ma feuille de calcul, en balayant une plage de cellules "Plage2", j'aimerais pouvoir déclencher une commande à chaque fois que la valeur d'une cellule de Plage2 est contenu dans la collection "CollectMle".
En fait j'aimerais vérifier si une valeur appartient à une collection.

Merci d'avance pour votre aide
 

pyfux

XLDnaute Occasionnel
Re : Gestion d'une collection

Bonjour,

Attention, faire le .End sur la colonne B et non la A!

Code:
   'Vérifie dans la plage de cellule B1 à B14 (Plage2) si une des valeurs appartient à la collection
   Sheets("Feuil2").Activate
   DerLigne2 = Range("B" & Rows.Count).End(xlUp).Row
   Set Plage2 = Range("B1:B" & DerLigne2)
   For Each Cellule In Plage2
        'if ??????   then cellule.offset(0,1)="Vide"
        If ItemExistInCollection(CollectMle, Cellule.Value) Then
            Cellule.Offset(0, 1).Value = "vide"
        End If
   Next Cellule

Petite fonction:
Code:
Private Function ItemExistInCollection(poCol As Collection, psKey As String)
On Error GoTo ErrorHandler
ItemExistInCollection = IIf(poCol.Item(psKey) = "", False, True)
Exit Function
ErrorHandler:
ItemExistInCollection = faux
End Function

L'accès à l'item de la collection nommé psKey peut échouer si il n'existe pas. VBA provoque alors dans ce cas une erreur qu'il faut intercepter.
Petite "astuce": dans le cas ou l'élément de la collection est chaine vide, considère qu'il n'existe pas.

J'attend les remarques des puristes VBA...
 

Discussions similaires

Statistiques des forums

Discussions
312 275
Messages
2 086 707
Membres
103 377
dernier inscrit
fredy45