Controle de Collections

Signaler
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour,

Je ne sais pas si c'est faisable vu que je n'ai rien trouvé dessus, est il possible de faire un contrôle de collections ?
Au lieu de faire des boutons par exemple N(0), N(1), ... , N(n)
J'aimerai créer plusieurs collections avec un index. J'ai essayer ceci, mais ça ne fonctionne pas :


Public Function CreerCollec()
Dim Oui As Integer
For Oui = 1 To 50
    Port(Oui) As New Collection
Next
End Function

11 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Salut,

Tu veux dire une collection de collections plutôt ?

Dim C As New List(Of Collection)

Dim NewColl As New Collection

NewColl.Add(MyObject)

C.Add(NewColl)



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Pas exactement en fait, parce que j'aimerai avoir un nom commun et un indice pour les remplir par boucle.

For i = 1 To Number
    Port(i).add "ok"
Next
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Je ne comprend pas...

For i = 1 To Number
    Port(i).add "ok"
Next


Dans ces cas la crée une simple collection...



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

La collection Collections n'existant pas en VB, ton idée (telle que formulée) n'est pas réalisable
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
J'ai 50 collections nommés de Port1 à Port50.
Je veux rajouter une valeur dans une collection :
Fo = 10 admettons

Private Function ChoisiMoi(Fo As Integer, Of As String)
If Port(Fo).Count = 1 Then
    Port(Fo).Remove 1
    Port(Fo).Add Of
Else
    Port(Fo).Add Of
End If
End Function


Cela ne fonctionne pas car Port(Fo) est inconnu ce qui ne m'étonne pas.

Il n'y a donc pas de manière de faire ceci ? Aucune ?
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Gros Oups !

Veuillez m'excuser, je n'ai pas bien vu le theme (vb6 et non .Net).

Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Il faudrait peut-être arrêter ta décision, car il y a une énorme différence entre :

J'aimerai créer plusieurs collections avec un index

et
J'ai 50 collections nommés de Port1 à Port50
.
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Et bien j'aurai aimer créer plusieurs collections avec un index pour ne pas avoir à faire 50 lignes et pouvoir utiliser après cet indice pour les remplir comme dans l'exemple ci dessous.
Donc si je ne peux pas faire d'indice de 1 à 50, tant pis je fais 50 lignes, mais ce qu'au final j'ai réellement besoin de faire, c'est les remplir avec un indice comme ceci :


Private Function ChoisiMoi(Fo As Integer, Offe As String)
If Port(Fo).Count = 1 Then
    Port(Fo).Remove 1
    Port(Fo).Add Offe
Else
    Port(Fo).Add Offe
End If
End Function
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Je t'ai alors répondu plus haut : La collection Collections n'existe pas
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Et tu ne peux créer une collection de colmlections, car le type des données d'une collection (membres) ne peut être collection (qui n'est pas un type de données)
Il te faut mettre sur pied un autre stratagème. (tableaux, par exemple)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

jmf0 -> pourquoi une collection ne supporterait pas de collection?


Private Sub Form_Load()
    Dim fc As New Collection 'Final Collection (nb : attention à la portée)
    
    Dim tc As Collection 'Temp Collection
    Dim i As Integer, j As Integer

    For i = 1 To 5
        Set tc = New Collection
        For j = 1 To 5
            tc.Add "Ligne " & i & " : Colonne " & j
        Next j
        fc.Add tc
        Set tc = Nothing
    Next i
    
    
    'item1 est une collection, on lit le 3e item
    MsgBox fc.Item(1).Item(3)
    
    'item4 est une collection, on lit le 5e item
    MsgBox fc.Item(4).Item(5)
End Sub




mis à part, la question est assez floue.
le code ci-dessus semble répondre mais il faudrait être plus clair (utilité, but réel, exemple concret)

++
[hr]