Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Bonjour Iznogood1,
Ta collection "MaColl" contient 2 instance de la classe objet "Classe1"
Lorsque tu ajoutes un item à une collection, tu peux ajouter
un deuxième paramètre "Key" qui doit représenter une chaîne "text e"
que tu peux par la suite utiliser pour désigner un membre de la
collection au lieu d'employer son index.
Dim Arr As Variant 'variable contenant le nom de chaque item de la col lection
Arr = Array("Objet1","Objet2")
For each elt in arr
Set MaClass = New Classe1
MaColl.Add MaClass, elt
next
Plus loin dans ton code, si tu veux faire référence à l'item "Objet 2"
Set T = MaColl("Objet2")
Tu as aussi la méthode "Remove" pour enlever un item de la collection
Est-ce possible d'être plus explicite sur l'objectif de ta démarche ?
N.B- Cette ligne de code :
Set MaColl = MaColl(1)
Il ne faut pas oublier que tu as défini ta variable "Ma Coll"
comme une nouvelle collection. Ta ligne de code est impos sible
car tout au long de ton code, tu peux ajouter ou enlever des
items à ta collection par les méthodes "Add" ou "Remo ve" mais
tu ne peux pas changer le "Type" de ta variable !
Tu peux utiliser une autre variable objet et faire :
Set T = MaColl(1)
"Iznogood1" a écrit dans le message de groupe de dis cussion :
Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Bonjour Iznogood1,
Ta collection "MaColl" contient 2 instance de la classe objet "Classe1"
Lorsque tu ajoutes un item à une collection, tu peux ajouter
un deuxième paramètre "Key" qui doit représenter une chaîne "text e"
que tu peux par la suite utiliser pour désigner un membre de la
collection au lieu d'employer son index.
Dim Arr As Variant 'variable contenant le nom de chaque item de la col lection
Arr = Array("Objet1","Objet2")
For each elt in arr
Set MaClass = New Classe1
MaColl.Add MaClass, elt
next
Plus loin dans ton code, si tu veux faire référence à l'item "Objet 2"
Set T = MaColl("Objet2")
Tu as aussi la méthode "Remove" pour enlever un item de la collection
Est-ce possible d'être plus explicite sur l'objectif de ta démarche ?
N.B- Cette ligne de code :
Set MaColl = MaColl(1)
Il ne faut pas oublier que tu as défini ta variable "Ma Coll"
comme une nouvelle collection. Ta ligne de code est impos sible
car tout au long de ton code, tu peux ajouter ou enlever des
items à ta collection par les méthodes "Add" ou "Remo ve" mais
tu ne peux pas changer le "Type" de ta variable !
Tu peux utiliser une autre variable objet et faire :
Set T = MaColl(1)
"Iznogood1" <denis...@free.fr> a écrit dans le message de groupe de dis cussion :
8f5633db-7019-493d-9bbd-7420d2a28...@o10g2000yqa.googlegroups.com...
Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Bonjour Iznogood1,
Ta collection "MaColl" contient 2 instance de la classe objet "Classe1"
Lorsque tu ajoutes un item à une collection, tu peux ajouter
un deuxième paramètre "Key" qui doit représenter une chaîne "text e"
que tu peux par la suite utiliser pour désigner un membre de la
collection au lieu d'employer son index.
Dim Arr As Variant 'variable contenant le nom de chaque item de la col lection
Arr = Array("Objet1","Objet2")
For each elt in arr
Set MaClass = New Classe1
MaColl.Add MaClass, elt
next
Plus loin dans ton code, si tu veux faire référence à l'item "Objet 2"
Set T = MaColl("Objet2")
Tu as aussi la méthode "Remove" pour enlever un item de la collection
Est-ce possible d'être plus explicite sur l'objectif de ta démarche ?
N.B- Cette ligne de code :
Set MaColl = MaColl(1)
Il ne faut pas oublier que tu as défini ta variable "Ma Coll"
comme une nouvelle collection. Ta ligne de code est impos sible
car tout au long de ton code, tu peux ajouter ou enlever des
items à ta collection par les méthodes "Add" ou "Remo ve" mais
tu ne peux pas changer le "Type" de ta variable !
Tu peux utiliser une autre variable objet et faire :
Set T = MaColl(1)
"Iznogood1" a écrit dans le message de groupe de dis cussion :
Bonjour,
soit une Collection d'objets (modules de classe).
Je souhaite permuter des objets de cette collection, mais ça ne
fonctionne pas !
Quelqu'un aurait-il une piste.
Exemple de code :
Sub Test()
Dim i As Long
Dim MaColl As New Collection
Dim MaClass As Classe1
Dim Echange As Classe1
For i = 1 To 2
Set MaClass = New Classe1
MaColl.Add MaClass
Next i
Set Echange = MaColl(1)
Set MaColl(2) = Echange '--> CA COINCE ICI !
Set MaColl = MaColl(1)
End Sub
Merci
Si je modifie une propriété de MaClass, et que je
parcours MaColl, tous les éléments ont leur propriété
modifiée (en fait c'est un abus de langage, car il n'y a
qu'un seul objet dans MaColl !)
**** Le code que tu as présenté, créait 2 instances distinctes
du même objet que représente ta "classe1" que tu mettais
dans une collection.
Qu'est-ce qu'une classe objet ? c'est l'ensemble des propriétés,
méthodes et événements(le cas échéant) que l'on attribue à
l'objet lui-même en définissant chaque caractéristiques par
du code qui est enchâssé dans le même module. Ce module est
appelé "Module de Classe dudit objet". En conséquence, chaque
instance de la classe objet crée un objet ayant chacun les mêmes
propriétés, méthodes et événements. Leur encodage est le même,
il se comporte tous de la même manière. Une variable définit dans
le haut du module de classe avec l'appellation Public n'est pas une
variable mais une "propriété" de la classe. Une procédure dans un
module de classe s'appelle "Méthode" de la classe. Il faut faire une
nette distinction entre la classe objet (objet lui-même) et ce que
cette objet représente : Exemple avec un objet bien connu :
Set Rg = Range("A1") ou Set Rg1 = Range("A2")
La classe objet "Range" a les mêmes propriétés, méthodes dans
chacun des cas. Ce n'est pas la classe objet qui change mais
la plage de cellules qui est pointée.
Au niveau de ton code, au lieu d'utiliser une collection, tu aurais
pu employer un tableau (array)
'-----------------------------------------
Sub test()
Dim MaClass(1 To 2) As Classe1
Dim Arr As Variant, A As Integer
Arr = Array("Objet1", "Objet2")
For Each elt In Arr
A = A + 1
Set MaClass(A) = New Classe1
Next
Set MaClass(1) = MaClass(2)
End Sub
'-----------------------------------------Je voulais écrire Set MaColl(2)=MaColl(1).
Ce qui coince aussi de toute manière.
**** Dans le code précédent (tableau) je peux faire ce que
tu désires. Cependant, ce que tu ne sembles pas réaliser
c'est dans ton code utilisant une collection, chaque élément
de la collection fait partie d'une "Méga" variable "MaColl"
et tu voudrais modifier ses membres (items) par une façon
de faire (méthode) qui n'est pas définie par sa classe objet
(collection). Pour respecter cet objet, tu n'as pas d'autres
alternatives d'utiliser les méthodes "Remove" ou "add".
C'est ce à quoi tu t'aies astreint lorsque tu as choisi d'utiliser
une variable objet "Collection". Il faut respecter les règles du jeu.
;-)
Si je modifie une propriété de MaClass, et que je
parcours MaColl, tous les éléments ont leur propriété
modifiée (en fait c'est un abus de langage, car il n'y a
qu'un seul objet dans MaColl !)
**** Le code que tu as présenté, créait 2 instances distinctes
du même objet que représente ta "classe1" que tu mettais
dans une collection.
Qu'est-ce qu'une classe objet ? c'est l'ensemble des propriétés,
méthodes et événements(le cas échéant) que l'on attribue à
l'objet lui-même en définissant chaque caractéristiques par
du code qui est enchâssé dans le même module. Ce module est
appelé "Module de Classe dudit objet". En conséquence, chaque
instance de la classe objet crée un objet ayant chacun les mêmes
propriétés, méthodes et événements. Leur encodage est le même,
il se comporte tous de la même manière. Une variable définit dans
le haut du module de classe avec l'appellation Public n'est pas une
variable mais une "propriété" de la classe. Une procédure dans un
module de classe s'appelle "Méthode" de la classe. Il faut faire une
nette distinction entre la classe objet (objet lui-même) et ce que
cette objet représente : Exemple avec un objet bien connu :
Set Rg = Range("A1") ou Set Rg1 = Range("A2")
La classe objet "Range" a les mêmes propriétés, méthodes dans
chacun des cas. Ce n'est pas la classe objet qui change mais
la plage de cellules qui est pointée.
Au niveau de ton code, au lieu d'utiliser une collection, tu aurais
pu employer un tableau (array)
'-----------------------------------------
Sub test()
Dim MaClass(1 To 2) As Classe1
Dim Arr As Variant, A As Integer
Arr = Array("Objet1", "Objet2")
For Each elt In Arr
A = A + 1
Set MaClass(A) = New Classe1
Next
Set MaClass(1) = MaClass(2)
End Sub
'-----------------------------------------
Je voulais écrire Set MaColl(2)=MaColl(1).
Ce qui coince aussi de toute manière.
**** Dans le code précédent (tableau) je peux faire ce que
tu désires. Cependant, ce que tu ne sembles pas réaliser
c'est dans ton code utilisant une collection, chaque élément
de la collection fait partie d'une "Méga" variable "MaColl"
et tu voudrais modifier ses membres (items) par une façon
de faire (méthode) qui n'est pas définie par sa classe objet
(collection). Pour respecter cet objet, tu n'as pas d'autres
alternatives d'utiliser les méthodes "Remove" ou "add".
C'est ce à quoi tu t'aies astreint lorsque tu as choisi d'utiliser
une variable objet "Collection". Il faut respecter les règles du jeu.
;-)
Si je modifie une propriété de MaClass, et que je
parcours MaColl, tous les éléments ont leur propriété
modifiée (en fait c'est un abus de langage, car il n'y a
qu'un seul objet dans MaColl !)
**** Le code que tu as présenté, créait 2 instances distinctes
du même objet que représente ta "classe1" que tu mettais
dans une collection.
Qu'est-ce qu'une classe objet ? c'est l'ensemble des propriétés,
méthodes et événements(le cas échéant) que l'on attribue à
l'objet lui-même en définissant chaque caractéristiques par
du code qui est enchâssé dans le même module. Ce module est
appelé "Module de Classe dudit objet". En conséquence, chaque
instance de la classe objet crée un objet ayant chacun les mêmes
propriétés, méthodes et événements. Leur encodage est le même,
il se comporte tous de la même manière. Une variable définit dans
le haut du module de classe avec l'appellation Public n'est pas une
variable mais une "propriété" de la classe. Une procédure dans un
module de classe s'appelle "Méthode" de la classe. Il faut faire une
nette distinction entre la classe objet (objet lui-même) et ce que
cette objet représente : Exemple avec un objet bien connu :
Set Rg = Range("A1") ou Set Rg1 = Range("A2")
La classe objet "Range" a les mêmes propriétés, méthodes dans
chacun des cas. Ce n'est pas la classe objet qui change mais
la plage de cellules qui est pointée.
Au niveau de ton code, au lieu d'utiliser une collection, tu aurais
pu employer un tableau (array)
'-----------------------------------------
Sub test()
Dim MaClass(1 To 2) As Classe1
Dim Arr As Variant, A As Integer
Arr = Array("Objet1", "Objet2")
For Each elt In Arr
A = A + 1
Set MaClass(A) = New Classe1
Next
Set MaClass(1) = MaClass(2)
End Sub
'-----------------------------------------Je voulais écrire Set MaColl(2)=MaColl(1).
Ce qui coince aussi de toute manière.
**** Dans le code précédent (tableau) je peux faire ce que
tu désires. Cependant, ce que tu ne sembles pas réaliser
c'est dans ton code utilisant une collection, chaque élément
de la collection fait partie d'une "Méga" variable "MaColl"
et tu voudrais modifier ses membres (items) par une façon
de faire (méthode) qui n'est pas définie par sa classe objet
(collection). Pour respecter cet objet, tu n'as pas d'autres
alternatives d'utiliser les méthodes "Remove" ou "add".
C'est ce à quoi tu t'aies astreint lorsque tu as choisi d'utiliser
une variable objet "Collection". Il faut respecter les règles du jeu.
;-)