Type des collections

Résolu
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 - 11 janv. 2006 à 16:46
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 12 janv. 2006 à 12:21
Salut !
J'aurai voulu savoir s'il y avait un moyen de se créer des listes de type perso (j'ai essayé et ca marchait pas, avec Dim a as new colleection, a.add b où b est de type typeperso)

Merci de répondre.
A+.
Thomas.

P.S : je repose ce message parce que sur l'autre j'ai eu plusieurs réponses qui ne marchaient pas, et du coup ceux qui avaient peut être la réponse n'ont pas répondu prce qu'ils ont vu qu'il y avait déja 6 réponses à mon problème

5 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
11 janv. 2006 à 17:09
Salut,

Pour ce que j'en sais, il est impossible d'ajouter un objet de type perso à une collection.

Le seul moyen que j'ai trouvé pour faire ça, c'est de créer un module de classe.

Exemple :
J'ai créé un module de classe (CTest) qui contient
-----------------------------------
Option Explicit

Public Nom As String
Public Prenom As String
------------------------------------

Ensuite je fais :
-------------------------------------
Public Sub test()
Dim lCol As New Collection
Dim l_Test As CTest

'Ajout d'un élément à la collection
Set l_Test = New CTest
With l_Test
.Nom = "MAJAX"
.Prenom = "Gérard"
End With
lCol.Add l_Test, "Perso1"
'Ajout d'un 2e élément à la collection
Set l_Test = New CTest
With l_Test
.Nom = "GARCIMORE"
.Prenom = "???"
End With
lCol.Add l_Test, "Perso2"

Debug.Print "Nom perso 1 : " & lCol("Perso1").Nom

Debug.Print "Nom perso 2 : " & lCol("Perso2").Nom
Set l_Test = Nothing

End Sub
-------------------------------------

Si qqn a plus simple, je suis preneur ...
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 janv. 2006 à 19:03
salut,

si personne ne t'a répondu la première fois c'est peut-être que la question n'est pas claire?

elle ne l'est pas pour moi en tout cas.....
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
11 janv. 2006 à 21:15
Bonsoir,

Je te remets ici un code que j'avais placé sur ton post précédant.

Ce code fonctionne très bien, Donc je me répette, si celà ne te
convient pas, Explique clairement ce que tu veux faire et qu'est que
c'est ce typeperso ??



Private Sub Command1_Click()

Dim a As New Collection

a.Add ("1230")

a.Add ("2460")

a.Add ("Bonjour")



MsgBox a.Item(1)

MsgBox a.Item(3)

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
12 janv. 2006 à 09:45
jean pierre :
ton code fonctionne, il n'y a aucun probleme.


ce que je veux : (effectivement je me suis peut etre pas expliqué assez clairement)


je veux avoir une liste de type perso c'est à dire pas une liste d'entiers, ni une liste de chaines de caractères, mais par exemple une liste de couples d'entiers ou autre.

pour etre plus clair voila mon projet : on commande un petit visseau qui tire des missiles. Les missiles ont 3 propriétés : 1 : leur puissance, codé sur un entier, 2 leur x et 3 leur y.

Quand un missile arrive en haut de l'écran on le supprime, et quand on appuie sur espace ca en tire 1. Il faut donc traiter ce probleme avec les listes et j'aimerai avoir une liste des missiles qui sont sur l'écran (avec leurs 3 propriétés dedans)

type missile
power as integer
x as integer
y as integer
end type

J'ai fait une solution batarde qui consiste à utiliser 3 listes ("Collection") en même temps, et ca marche, mais c'est pas propre.

Je suis aussi sur un autre projet où il faudrait la liste des rectangles dessinés dans une picture box. il faut 4 coordonnées pour chacun, ainsi que 1 numéro pour chacun correspondant à ce que contient le rectangle, et 1 autre pour la couleur. C'est pour ca que je me demandais si quelqu'un connaissait une solution pour faire 1 Collection au lieu de 6 dans ce cas.

A+.
Thomas.

PS : j'ai pas encore essayé le code de mrdep1978


PS 2 : si je fais un message trop long les gens vont moins répondre
PS 3 : c'est vrai que si vous avez jamais programmé en camL vous serez moins à même de comprendre ce que j'ai voulu dire. je m'expliquerai mieux la prochaine fois. désolé

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 janv. 2006 à 12:21
salut,

et avec un tableau çà ne te va pas?







private type missile

power as integer

x as integer

y as integer

end type



dim aTableau() as missile



à toi ensuite de gérer les enregistrements.... tu peux même ajouter une ligne au type (visible as boolean)
Rejoignez-nous