[VBA] Parcours d'une collection

Le
HD
Bonjour,

J'ai crée une collection pour laquelle je place des données (suivant un
parcours de la colonne 1 et 2) mon problème est que je ne sais pas
comment récupérer les 2e données

i = 1
Set ColMqt = New Collection
Do
If Cells(i, 1).Value = "" Then
ColMqt.Add Cells(i, 1).Value, Cells(i, 2).Value
End If
i = i + 1
Loop Until Cells(i, 3).Value = ""

If ColMqt.Count > 0 Then
For i = 0 To ColMqt.Count
MsgBox ColMqt(i)
Next
End If

Set ColMqt = Nothing


ColMqt(i) ne me donne donc accès qu'à la donnée de la 1ère colonne

Merci d'avance pour votre aide
--
@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
anonymousA
Le #5073801
Bonjour,

la 2eme donnée comme tu l'appelles n'est pas une donnée mais une clé.Tu
ne peux pas y acceder pour faire ce que tu souhaites. Si tu veux
réaliser ce que tu souhaites , tu peux passer p.e par Dictionnary ,par
un tableau de 2 colonnes ou par un listbox ou combobox, ce sera comme tu
veux.
Pour Dictionnary, tapes dans Google sur ce forum et tu auras plein de
réponses sur la manière de constituer une collection en utilisant cette
classe d'objets. Une fois que tu auras assimilé comment ca marche ,pense
à utiliser la fonction Items de cet objet et il me semble que tu auras
réussi à faire ce que tu demandes.

A+


Bonjour,

J'ai crée une collection pour laquelle je place des données (suivant un
parcours de la colonne 1 et 2)... mon problème est que je ne sais pas
comment récupérer les 2e données...

i = 1
Set ColMqt = New Collection
Do
If Cells(i, 1).Value = "" Then
ColMqt.Add Cells(i, 1).Value, Cells(i, 2).Value
End If
i = i + 1
Loop Until Cells(i, 3).Value = ""

If ColMqt.Count > 0 Then
For i = 0 To ColMqt.Count
MsgBox ColMqt(i)
Next
End If

Set ColMqt = Nothing


ColMqt(i) ne me donne donc accès qu'à la donnée de la 1ère colonne...

Merci d'avance pour votre aide


JB
Le #5073781
Bonsoir,

Utiliser Dictionnary plutôt que Collection(beaucoup + performant sur
nb important d'items)

Set mondico = CreateObject("Scripting.Dictionary")
For i = 2 To 10
mondico.Add Cells(i, 1), Cells(i, 2)
Next i
a = mondico.keys
b = mondico.items
For i = 0 To mondico.Count - 1
MsgBox a(i)
Next i
For i = 0 To mondico.Count - 1
MsgBox b(i)
Next i

http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm

JB
http://boisgontierjacques.free.fr



On 19 nov, 17:15, "HD"
Bonjour,

J'ai crée une collection pour laquelle je place des données (suivant u n
parcours de la colonne 1 et 2)... mon problème est que je ne sais pas
comment récupérer les 2e données...

i = 1
Set ColMqt = New Collection
Do
If Cells(i, 1).Value = "" Then
ColMqt.Add Cells(i, 1).Value, Cells(i, 2).Value
End If
i = i + 1
Loop Until Cells(i, 3).Value = ""

If ColMqt.Count > 0 Then
For i = 0 To ColMqt.Count
MsgBox ColMqt(i)
Next
End If

Set ColMqt = Nothing

ColMqt(i) ne me donne donc accès qu'à la donnée de la 1ère colonne ...

Merci d'avance pour votre aide
--
@+
HD


anonymousA
Le #5073761
il faut comprendre Keys bien sur au lieu d'Items.


Bonjour,

la 2eme donnée comme tu l'appelles n'est pas une donnée mais une clé.Tu
ne peux pas y acceder pour faire ce que tu souhaites. Si tu veux
réaliser ce que tu souhaites , tu peux passer p.e par Dictionnary ,par
un tableau de 2 colonnes ou par un listbox ou combobox, ce sera comme tu
veux.
Pour Dictionnary, tapes dans Google sur ce forum et tu auras plein de
réponses sur la manière de constituer une collection en utilisant cette
classe d'objets. Une fois que tu auras assimilé comment ca marche ,pense
à utiliser la fonction Items de cet objet et il me semble que tu auras
réussi à faire ce que tu demandes.

A+


Bonjour,

J'ai crée une collection pour laquelle je place des données (suivant
un parcours de la colonne 1 et 2)... mon problème est que je ne sais
pas comment récupérer les 2e données...

i = 1
Set ColMqt = New Collection
Do
If Cells(i, 1).Value = "" Then
ColMqt.Add Cells(i, 1).Value, Cells(i, 2).Value
End If
i = i + 1
Loop Until Cells(i, 3).Value = ""

If ColMqt.Count > 0 Then
For i = 0 To ColMqt.Count
MsgBox ColMqt(i)
Next
End If

Set ColMqt = Nothing


ColMqt(i) ne me donne donc accès qu'à la donnée de la 1ère colonne...

Merci d'avance pour votre aide




HD
Le #5071291
Merci grandement à vous deux !!!

Je ne connaissais pas Dictionnary... Celà risque de me resservir !!!


--

@+
HD
Publicité
Poster une réponse
Anonyme