Bonjour,
Je souhaiterai savoir si il existe un moyen de compter le nombre d'attributs d'une classe en VBA, tout est dans le titre.
Cdt,
Bonjour,
Je souhaiterai savoir si il existe un moyen de compter le nombre d'attributs d'une classe en VBA, tout est dans le titre.
Cdt,
Bonjour Franck
ce terme "attributs" est celui qui est utilisé pour désigner ce que l'on appelle plus communément "propriétés".sauf ce que tu entends par "attributs" d'une classe
L'inconnue, par contre, est la "classe" construite de A à Z ou "sur une base d'objet".
Dans un cas comme dans l'autre, d'ailleurs, je ne vois personnellement pas trop l'utilité d'en connaître le NOMBRE![]()
Bonjour Jacques,
D’où ma question.ce terme "attributs" est celui qui est utilisé pour désigner ce que l'on appelle plus communément "propriétés".
L'inconnue, par contre, est la "classe" construite de A à Z ou "sur une base d'objet".
Dans un cas comme dans l'autre, d'ailleurs, je ne vois personnellement pas trop l'utilité d'en connaître le NOMBRE
Peut-être que ce vocabulaire ne lui est pas familier et qu'il sous-entend par "attribut" le mot "instance".
Bonjour,
Désolé de ne pas avoir été assez précis. Par "attributs" j'entendais effectivement "propriétés" de ma classe, "créée de A à Z"
Je cherchais en effet à compter ses propriétés pour essayer d'adapter dynamiquement une listbox pour afficher dynamiquement certaines valeurs des instances de mes classes.
J'ai du faire ça sur demande d'un supérieur, mais il s'est avéré que c'etait se compliquer la vie pour pas grand chose et nous avons décidé d'abandonner.
Je mets le sujet en résolu
c'est pas résolu vu que je peux encore répondre...
j'aurai envie de dire de passer par une variable globale que tu incrémentes à chaque création d'un nouvel "attribut"
Bonjour,
ce que je voudrai bien comprendre c'est si l'intéressé à ouvert une discutions philosophique ou si il attends véritablement une réponse!
car sans pouvoir analyser son code je ne pourrai que dire comptes sur tes doigts!
Bonjour,
Je souhaitais effectivement avoir une réponse, mais comme je l'ai indiqué par la suite, ce n'est plus nécessaire.
Cependant, il peut toujours être intéressant de savoir si c'est possible.
voici un exemple d'une petite de mes classes :
J'aurais aimé par je ne sais quel moyen pouvoir retourner le nombre 2 car deux propriétés dans cette classe, le tout sans vraiment toucher au code dans les classes. Sinon effectivement autant compter sur ses doigts
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Option Explicit 'variables locales de stockage des valeurs de propriétés Private P_STR_idcategory As String 'copie locale Private P_STR_nomcategory As String 'copie locale Public Property Let STR_idcategory(ByVal PAR_STR_idcategory As String) P_STR_idcategory = PAR_STR_idcategory End Property Public Property Get STR_idcategory() As String STR_idcategory = P_STR_idcategory End Property Public Property Let STR_nomcategory(ByVal PAR_STR_nomcategory As String) P_STR_nomcategory = PAR_STR_nomcategory End Property Public Property Get STR_nomcategory() As String STR_nomcategory = P_STR_nomcategory End Property
Cdt,
pour faire ce que tu veux, il faut revoir toute ta classe et même ton code appelant ta classe!
Code Classe1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Private dict As Object Private Sub Class_Initialize() Set dict = CreateObject("Scripting.Dictionary") End Sub Private Sub Class_Terminate() Set dict = Nothing End Sub Public Property Let test(Attribut, value) k = dict.Keys If IsNumeric(Attribut) Then dict(k(Attribut - 1)) = value Else dict(Attribut) = value End Property Public Property Get test(Attribut) k = dict.Keys If IsNumeric(Attribut) Then test = dict(k(Attribut - 1)) Else test = dict(Attribut) test = dict(Attribut) End Property Public Property Get NbAttribut() NbAttribut = dict.Count End Property
Code Module1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub test() Dim cls As New Classe1 cls.test("PAR_STR_idcategory") = "toto" cls.test("PAR_STR_nomcategory ") = "titi" For I = 1 To cls.NbAttribut cls.test(I) = cls.test(I) & "AAA" Debug.Print cls.test(I) Next End Sub
Dernière modification par Invité ; 17/05/2017 à 13h14.
je me doute que tu ne voulais pas lire ça!
je suis d'accord avec toi, c'est le genre de truc qu'on fait en début de projet après c'est galère pour réaligner tous!
Effectivement, c'est l'une des raisons pour laquelle je ne pense pas mettre cette solution en place.
A moins que je finisse mon projet en avance et que j'ai le temps d'optimiser mon code encore plus
Merci en tout cas
Partager