Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

créer collection

7 réponses
Avatar
Emcy
bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs : Nom
et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub

7 réponses

Avatar
Emcy
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs : Nom
et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub



Avatar
Clément Marcotte
Parce que les collections et les types définis par l'utilisateur sont deux
choses diffrentes.

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs :
Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub







Avatar
Clément Marcotte
http://cjoint.com/?lwxQnkC7vO

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs :
Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub







Avatar
Emcy
merci mais cette solution ne va pas avec mon appli

j'ai des elements (qu'on appelera groupe 1) à regrouper dans un ensemble
(collection)
j'ai d'autres elements (qu'on appelera groupe 2) qui sont constitués d'un
ensemble de propriétés (variables)
le probleme est que je veux que chaque element d'un groupe 1 soient
constitués d'un ensemble de plusieurs elements du groupe 2

comment faire ? relies mon premier post tu comprenderas peut-être un peu
mieux mon probleme ....


"Clément Marcotte" a écrit dans le message
de news: %
http://cjoint.com/?lwxQnkC7vO

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée
125cm3
poids
500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs :
Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub











Avatar
Clément Marcotte
Ce que tu veux faire est impossible. Tu ne peux pas utiliser de collection
avec le type défini par l'utilisateur.

Soit que tu te fais des collections sans "TYPE", soit que tu te fais des
tableaux avec des "TYPE" que tu adresses avec les indices de tableaux.





"Emcy" a écrit dans le message de news:

merci mais cette solution ne va pas avec mon appli

j'ai des elements (qu'on appelera groupe 1) à regrouper dans un ensemble
(collection)
j'ai d'autres elements (qu'on appelera groupe 2) qui sont constitués d'un
ensemble de propriétés (variables)
le probleme est que je veux que chaque element d'un groupe 1 soient
constitués d'un ensemble de plusieurs elements du groupe 2

comment faire ? relies mon premier post tu comprenderas peut-être un peu
mieux mon probleme ....


"Clément Marcotte" a écrit dans le message
de news: %
http://cjoint.com/?lwxQnkC7vO

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et d'une
collection Option
Chaque element de la collection Option est composé de deux attributs :
Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de
famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub















Avatar
Emcy
Et peut-on ajouter dans une collection un element qui est constitué de
plusieurs elements (variables + collection)

"Clément Marcotte" a écrit dans le message
de news:
Ce que tu veux faire est impossible. Tu ne peux pas utiliser de collection
avec le type défini par l'utilisateur.

Soit que tu te fais des collections sans "TYPE", soit que tu te fais des
tableaux avec des "TYPE" que tu adresses avec les indices de tableaux.





"Emcy" a écrit dans le message de news:

merci mais cette solution ne va pas avec mon appli

j'ai des elements (qu'on appelera groupe 1) à regrouper dans un ensemble
(collection)
j'ai d'autres elements (qu'on appelera groupe 2) qui sont constitués d'un
ensemble de propriétés (variables)
le probleme est que je veux que chaque element d'un groupe 1 soient
constitués d'un ensemble de plusieurs elements du groupe 2

comment faire ? relies mon premier post tu comprenderas peut-être un peu
mieux mon probleme ....


"Clément Marcotte" a écrit dans le
message de news: %
http://cjoint.com/?lwxQnkC7vO

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à quoi
ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et
d'une collection Option
Chaque element de la collection Option est composé de deux attributs :
Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de
famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub



















Avatar
Clément Marcotte
Puisqu'une collection n'est rien d'autre qu'un assemblage de plusieurs
"lignes" du type

élément, Index

tu pourrais peut-être te bâtir une collection pour chaque produit.

Quelque chose du genre, si j'ai bien compris:

sub collectionfamille
dim famille as new collection
for i = 1 to i
famille.add detail,"i"
next

tu te fais une boucle externe pour chaque famille, et une boucle interne ou
chaque famille de vient ta collection "famille"



"Emcy" a écrit dans le message de news:
%239rSTC$
Et peut-on ajouter dans une collection un element qui est constitué de
plusieurs elements (variables + collection)

"Clément Marcotte" a écrit dans le message
de news:
Ce que tu veux faire est impossible. Tu ne peux pas utiliser de
collection avec le type défini par l'utilisateur.

Soit que tu te fais des collections sans "TYPE", soit que tu te fais des
tableaux avec des "TYPE" que tu adresses avec les indices de tableaux.





"Emcy" a écrit dans le message de news:

merci mais cette solution ne va pas avec mon appli

j'ai des elements (qu'on appelera groupe 1) à regrouper dans un ensemble
(collection)
j'ai d'autres elements (qu'on appelera groupe 2) qui sont constitués
d'un ensemble de propriétés (variables)
le probleme est que je veux que chaque element d'un groupe 1 soient
constitués d'un ensemble de plusieurs elements du groupe 2

comment faire ? relies mon premier post tu comprenderas peut-être un peu
mieux mon probleme ....


"Clément Marcotte" a écrit dans le
message de news: %
http://cjoint.com/?lwxQnkC7vO

"Emcy" a écrit dans le message de news:
ea%
je vois que personne ne me reponds...
... j'isole donc mieux le probleme :

Type TypeToto
a As String
b As Integer
End Type

Sub main()

Dim MaCollection As New Collection
Dim MonElement As TypeToto

MonElement.a = "coucou"
MonElement.b = 4

MaCollection.Add MonElement

End Sub

pourquoi ça ne marche pas ?
comment faire ?

"Emcy" a écrit dans le message de news:

bonjours,

Dans un tableau excel, j'ai 4 colonnes :
Famille, Description, NomOption, ValeurOption

je veux affecté à famille une description et des options. voici à
quoi ressemble mon tableau :

Famille Description NomOption ValeurOption
Voiture véhicule à 4 roues Couleur rouge
NbrePorte 3
Moto véhicule à 2 roues Couleur verte
cylindrée 125cm3
poids 500Kg

Voici ce que dois faire ma macro :
je crée une collection MaCollectionFamille qui est composé d'element
MonElementFamille
Chaque MonElementFamille est composé d'un attribut Description et
d'une collection Option
Chaque element de la collection Option est composé de deux attributs
: Nom et Valeur

j'ai un message d'erreur lors de la compile sur la ligne :
MaCollectionOption.Add MonOption


Public Type TypeFamille 'type d'une famille
Nom As String
Description As String
Option As Collection
End Type

Public Type TypeOption 'type d'une option
Nom As String
Valeur As String
End Type

Public MaCollectionFamille As Collection

Sub ChargementFamille()

Dim FeuilleFamille As Object 'objet feuille Famille

Dim CelluleFamille As String
Dim CelluleDescription As String
Dim CelluleOption As String
Dim CelluleValeur As String

Dim MonOption As TypeOption
Dim MaFamille As TypeFamille

Dim MonElementFamille As TypeFamille
Dim MaCollectionOption As Collection

Dim MonNbreLigne As Integer
Dim i As Integer
Set FeuilleFamille = Sheets("Famille")

MonNbreLigne = ComptageDeLigne(FeuilleFamille, 3)

Set MaCollectionFamille = New Collection
Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(1, 1).Value
CelluleDescription = FeuilleFamille.Cells(1, 1).Value

MonOption.Nom = FeuilleFamille.Cells(1, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(1, 3).Value
MaCollectionOption.Add MonOption

For i = 2 To MonNbreLigne
If FeuilleFamille.Cells(i, 1).Value <> "" Then 'changement de
famille
MonElementFamille.Nom = CelluleFamille
MonElementFamille.Description = CelluleDescription
Set MonElementFamille.Option = MaCollectionOption

MaCollectionFamille.Add MonElementFamille

Set MaCollectionOption = New Collection

CelluleFamille = FeuilleFamille.Cells(i, 1).Value
CelluleDescription = FeuilleFamille.Cells(i, 2).Value
Else
MonOption.Nom = FeuilleFamille.Cells(i, 2).Value
MonOption.Valeur = FeuilleFamille.Cells(i, 3).Value
MaCollectionOption.Add MonOption
End If
Next i

End Sub