Tableau de tableaux

Résolu
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013 - 14 déc. 2006 à 01:16
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013 - 15 déc. 2006 à 14:29
Bonsoir tout le monde,
Je voudrais créer un tableau dont chaque élément serait lui-même un tableau.
Pourriez-vous me dire comment le déclarer, et comment le remplir
Par exemple, une fonction du genre:

Private Function CreateMultiTab(aTbl() As String) As Integer
Dim aStructure() As String   '<<déclaration du tableau
Dim aField(3) As String
For nCnt = 0 To UBound(aTbl)
   aField(0) = Array("lundi", "mardi", "mercredi")
   aField(1) = Array("janvier", "février", "mars")
   aField(2) = Array(10, 20, 30, 40)
   ReDim Preserve aStructure(UBound(aStructure) + 1)
   aStructure(UBound(aStructure)) = aField    '<Next
End Function

Merci pour vos réponses
Jessica

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 déc. 2006 à 08:59
Salut,

Ou la le vieux message de 2004, et bien toi quand tu fais des recherches tu ne les ait pas à moitié. CE n'est pas une critique bien au contraire si tout le monde pouvait prendre la peine de chercher autant.

Bref...

POur récupérer une collection contenu dans une collection.

Dim MaCol2  As Collection
Set MaCol2 = MaCol(2)
De maniere plus général si tu as ajoutée des objets instanciables (par New) tu devras les récupérer par Set
SI tu veux le récupérer... Mais si tu veux juste afficher le contenu. et comme tu sais que c'est une collection (NOTE: c'est pareil pour le tableau)
Msgbox MaCol(2)(1)

En revanche pour récuperer le tableau dans une variable pas de SET

Voilà j'espere que cela t'aide.
Pour le TYPE, je crois que l'on ne peux pas les ajouter dans une collection de maniere simple.
Mais il suffit de faire une classe somportant les meme attributs que ton TYPE et le tour et joué.

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 10:09
Salut,
Et si tu passait par des collections ?

Cela te permettrait peu etre de resoudre ton problème.

@+: Ju£i?n
Pensez: Réponse acceptée
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
14 déc. 2006 à 12:49
Bonjour Julien,


Merci de me répondre.
C'est quoi au juste une collection ?
Je suppose que c'est ce qui suit qu'on appelle une collection

Type JC_FieldStructure
  Column As String
  Data_type As String
  Char_max As Long
  Active As String
  NullAllowed as Byte
End Type


Dans ma fonction qui crée et remplit le tableau, j'ai mis
Dim aField() As JC_FieldStructure

Il me donne le message d'erreur "Type défini par l'utilisateur non défini", et la déclaration de aField est mise en surbrillance. J'ai également essayé avec
PUBLIC Type JC_FieldStructure
....
end type
Même résultat
Encore merci de m'aider
Jessica
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 13:26
Salut,
Non ce que tu montre n'est pas une collection mais un Type

Une collection ce définit comme suit:
Dim MaCollection as NEw Collection.

=> fait une petite recherche ensuite pour apprendre à utiliser cet objet qui peu contenir a peu pres tout ce que tu veux.

@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
15 déc. 2006 à 00:05
Bonsoir Julien,

Il semblerait qu'une collection soit LA solution que je recherche (et pas que pour mon projet actuel)
Suivant ton conseil, j'ai passé une grande partie de l'après-midi à chercher des exemple de collections, mais ils ne sont pas légion. Au passage, j'ai même trouvé sur le forum un message d'un certain jrivet du 05/10/2004, qui expliquait comment ajouter une collection dans une collection ! Egalement un code qui génère des classes et des collections, et encore d'autres. Mais pour l'instant, ce qui m'intéresse, c'est le code suivant (il faut bien commencer par quelque chose)

Option Explicit
Private Type MyType
  Nom As String
  Age As Integer
End Type

Private Sub Command1_Click()
Dim MaCol As New Collection, MaCol2 As New Collection
Dim aTab, MyTyp As MyType



MyTyp.Nom = "André"
MyTyp.Age = 20



MaCol2.Add "aa"
MaCol2.Add "bb"



aTab = Array("lun", "mar", "mer")
MaCol.Add aTab         '1
MaCol.Add MaCol2    '2
MaCol.Add 3.1416       '3
MaCol.Add "Salut"     '4
'MaCol.Add MyTyp    '5
End Sub


J'ai trouvé pour récupérer les valeurs des éléments  3, et 4 (3.1416 et salut), en faisant MaCol.item(3);
par contre, impossible de récupérer ni le tableau aTab, ni la collection MaCol2, et encore moins la variable Mytyp, pour lequel VB me donne un message d'erreur.
Si tu pouvais au moins me tuyauter sur les deux premiers cas, à savoir récupérer les valeurs de aTab et de MaCol2, ce serait super gentil. Désolée de poser des questions qui peuvent te sembler idiotes, mais c'est la 1ère fois que j'entend parler de collection, alors sois indulgent.
Est-il possible de connaitre le type de donnée qui se trouve dans un item (genre typeof) ?
Et tant qu'on y est, pourquoi ça ne marche pas avec MyTyp
Un tout grand merci d'avance
Jessica
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
15 déc. 2006 à 14:29
Bonjour Julien,
Un tout grand merci pour cette explication, et pour ton conseil quant à l'utilisation d'une collection. Pour moi, cette suggestion vaut de l'or !!
Quant à la recherche, je trouve que c'est une politesse que de d'abord chercher avant de poser une question. Sur le site, on dirait que "je débute", "je suis débutant" ou autre "je suis newbie" soit une raison valable pour poser une question sans même avoir effectué la moindre recherche. D'autant plus que le moteur de recherche ne fonctionne pas mal du tout. Ca éviterait de devoir répondre 3 fois par semaine à la question "comment créer une textebox numérique", ou "rechercher un mot dans un string"  (entre autres).
Vous insistez souvent sur la politesse, sur le language SMS ... Il faudrait également insister sur la recherche préalable.
Voilà, c'est mon avis, et je le partage.
Amitiés
Jessica
0
Rejoignez-nous