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

Membres actuellement en ligne

Statistiques des forums

Discussions
312 069
Messages
2 085 038
Membres
102 763
dernier inscrit
NICO26