VBA récupérer les key d'une collection

  • Initiateur de la discussion Initiateur de la discussion Hervé
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

a moi un peu de poser une série de question. 🙂

la premiere ici :

une collection est composé d'un item et d'une clé(key) unique

macollection.add monitem, makey

ce code alimente une collection avec un élément (monitem) et ayant pour clé(key)


range('a1')=macollection.item(1)

se code me renvoi en A1 le premier élément de la collection.

je voudrais non pas l'item en a1, mais la clé.

j'ai essayé : range('a1').key(1) BOUM retour dans les cordes.

auriez vous une syntaxe à me proposer ?

d'avance je vous remercie.

salut

ps : la deuxieme question suit.
 
Salut

Je suis également un grand utilisateur de collections, et j'ai été confronté plus d'une fois à ces problèmes de clés que j'aurais aimé pouvoir récupérer. Hélas, ce n'est pas possible, sauf à créer deux collections croisées, la deuxième indexée sur la première et renvoyant la même valeur item/index. Solution un peu lourde mais qui, il est vrai, m'a économisé une fois ou deux un peu de temps et quelques lignes de code.

Tiens, pendant que j'y suis, une petite astuce, n'utilisez pas de boucle du genre :
For i = 1 to Col.Count
Next i

il est bien plus rapide de procéder comme suit :
Dim Elt
For Each Elt in Col
'...
Next Elt

Et allez tiens, je vous en rajoute une autre. Cette syntaxe fonctionne également avec un Array, qui fonctionne alors comme une collection. Ainsi on peut très bien écrire :

Dim Elt
For Each Elt in Array(ListBox1, ListBox2, ListBox3)
'...
Next Elt

On a là au passage un exemple qu'une variable de type Variant (ce qu'est la variable Elt) peut conduire à une boucle bien plus rapide que si on avait utilisé un index de type Integer ou Long. Comme quoi il ne faut pas toujours mépriser ces Variant.

Message édité par: Ti_, à: 19/04/2006 18:44

Message édité par: Ti_, à: 19/04/2006 18:46
 
bonjour tout le monde

pascal 🙂 attention, ne confondons pas une collection et un dictionnary.

dans un dictionnary, on peut récupérer les clés :


'nécessite la référence : Microsoft scripting runtime
Dim data As New Dictionary
Dim element

data.Add 'cle', 'toto'

'on récupère la clé
For Each element In data.Keys
        MsgBox element
Next element


chose que l'on ne peut pas faire avec une collection :


Dim data As New Collection

data.Add 'item', 'cle'

'on récupère que l'item
MsgBox data(1)

didier, non, la clé n'est pas l'index de la collection, c'est un string.

ti, j'ai bien peur que tu ai raison (comme d'hab), je retiens l'idée de la double collection croisé, ca fera déjà moins usine à gaz que ma méthode (utilisation d'une variable tableau en parrallèle de la collection).

merci à vous trois pour vos etes penché sur mon souci.

salut
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

B
Réponses
1
Affichages
1 K
B
Retour