OVH Cloud OVH Cloud

Collections: pb de base

2 réponses
Avatar
myname
Bonjour,

soit le morceau de code suivant (VBA Excel) :

Dim c as new Collection
c.add "aaa","a"
c.add "bbb","b"
c.add "ccc","c"
MsgBox c("a")
MsgBox c("z")

Il affiche "aaa" puis plante avec une :
"Erreur d'exécution 5: Argument ou appel de procédure incorrect"

Le seul moyen de contournement que j'ai trouvé est un "On error resume next"
juste avant l'appel...

N'y a-t-il pas plus "élégant" pour repérer si un élément est présent ou pas
dans une collection, à partir d'une clé String ?

Merci

2 réponses

Avatar
bruno.jeune
Salut,
Peut être comme ceci !

Dim c As New Collection
c.Add "aaa"
c.Add "a"
c.Add "bbb"
c.Add "b"
c.Add "ccc"
c.Add "c"
MsgBox c(2)'pour avoir le "a" ou le for pour tout lister
For Each x In c
MsgBox x
Next

Bruno
"myname" a écrit dans le message news:
41e774e6$
Bonjour,

soit le morceau de code suivant (VBA Excel) :

Dim c as new Collection
c.add "aaa","a"
c.add "bbb","b"
c.add "ccc","c"
MsgBox c("a")
MsgBox c("z")

Il affiche "aaa" puis plante avec une :
"Erreur d'exécution 5: Argument ou appel de procédure incorrect"

Le seul moyen de contournement que j'ai trouvé est un "On error resume


next"
juste avant l'appel...

N'y a-t-il pas plus "élégant" pour repérer si un élément est présent ou


pas
dans une collection, à partir d'une clé String ?

Merci





Avatar
Guy DETIENNE
Salut ;O)

On pourrait créer une petite fonction de vérification :

Public Function isKeyExistInCollection(ByVal pCollection As Collection,
ByVal pKey As String) As Boolean

On Error GoTo ErrorHandler

Dim strTemp As Variant

isKeyExistInCollection = True
strTemp = pCollection(pKey)

Exit Function

ErrorHandler:
isKeyExistInCollection = False

End Function

Utilisation :

MsgBox isKeyExistInCollection(c, "z")

-> retournera FALSE dans ton cas

Guy


"myname" a écrit dans le message de news:
41e774e6$
Bonjour,

soit le morceau de code suivant (VBA Excel) :

Dim c as new Collection
c.add "aaa","a"
c.add "bbb","b"
c.add "ccc","c"
MsgBox c("a")
MsgBox c("z")

Il affiche "aaa" puis plante avec une :
"Erreur d'exécution 5: Argument ou appel de procédure incorrect"

Le seul moyen de contournement que j'ai trouvé est un "On error resume
next"
juste avant l'appel...

N'y a-t-il pas plus "élégant" pour repérer si un élément est présent ou
pas
dans une collection, à partir d'une clé String ?

Merci