Collection, trouver le rang à partir de la clé

Signaler
Messages postés
12
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2008
-
Messages postés
12
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2008
-
Bonjour,

Je débute avec les collections.

Quelques question sans doute naïves :



1°) Dans une collection, existe-t-il un système simple pour déterminer :






-         
quel est le rang (index) d’un élément dont la clé d’accès est « Ma clé »








-         
quelle est la clé d’accès de l’élément de rang 37 ?





<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



2°) On souhaite bidouiller un élement d'une collection SANS modifier la collection
Set myElt = myCol(4) si je bidouille myElt ça modifie (évidemment) myCol
Si je fais : Set myNewElt = myElt c'est également le cas. J'en conclue que myElt est une sorte de pointeur vers les données. Si je le copie, il continue à pointer vers les mêmes données !
Du coup, comment s'en sortir pour arriver à "déconnecter" pointeur et données et à récupérer effectivement celles-ci ?

3°) A condition que vous me proposiez des solutions aux questions précédentes, les collections me semblent présenter des avantages sur les tableaux dynamiques (pas de redim preserve, accès par clé, boucle for each in, etc.)
Est-ce que ça présente des inconvénients majeurs dont je n'aurais pas encore pris conscience ?







Merci d’avance !

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
As-tu essayer de regarder les attributs de ta Collection ?
Normalement, il doit y avoir :
maCollection(monIndex).Key
et
maCollection("maClé").Index

Avantage des Collections :
- La recherche par clé "chaine" plus facile grace aux clés (si pas de doublons)
- Recherche beaucoup plus rapide
- Peut accepter de stocker presque n'importe quoi : Texte bien sûr, mais aussi structures, objects, composants

Inconvénients :
- Lenteurs lors des suppressions d'éléments (par rapport aux tableaux dynamiques)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
12
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2008

Jack,

Etes-vous sûr de votre réponse (matinale ...) ? J'utilise VB6 avec le SP.

maCollection(monIndex).Key et maCollection("maClé").Index ne fonctionnent pas : erreur 424 "un objet est requis"

D'ailleurs dans l'aide sur ke thème Collection, Objet
- propriété proposée .Count
- méthodes proposées .Add .Remove .Item

Merci
Messages postés
12
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2008

Il existe une méthode .Keys pour l'objet Scripting.Dictionary qui renvoie un tableau des clés classées dans l'ordre d'index.

J'ai déjà utilisé cette histoire dans le passé mais je suis tombé récemment sur :
http://www.vbfrance.com/infomsg_COLLECTION-VS-DICTIONNARY_522062.aspx
qui ne m'a pas encouragé à récidiver ...