créer collection
Le
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
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

Poser une question


... 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"
choses diffrentes.
"Emcy" ea%
"Emcy" ea%
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" de news: %
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"