OVH Cloud OVH Cloud

[VBA] Parcours d'une collection

4 réponses
Avatar
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

4 réponses

Avatar
anonymousA
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


Avatar
JB
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" wrote:
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


Avatar
anonymousA
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




Avatar
HD
Merci grandement à vous deux !!!

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


--

@+
HD