Bonjour,

Je suis actuellement en train de coder un module de classe d'opérations de matrice, et j'ai plusieurs questions
:
- Je souhaiterais savoir si il est possible de proposer une liste de choix, vous savez quand j'utilise par exemple une fonction sort, qui propose le choix xldescendant, ou xlascendant, peut on proposer une liste de choix nous aussi ?

- je cherche la confirmation que l'on ne peux pas saisir de parametre dans la sub d'initialisation , qui nous sert un peut de constructeur "Sub Class_Initialize()" on peut biensure initialiser des parametres mais la sub ne peux pas prendre de parametre ?

- Nous ne pouvons pas mettre une propriete get en private et la propriete en ecriture (let) en public ?

- en terme de performance, si je fais des fonctions optimisées en terme de complexite .. , est-ce performant de gerer plutot ma classe plutot que des tableaux dans vba, car la gestion des tableau dans vba est un peu incomplete, ma classe permet de gerer l'extraction de colonnes, somer les lignes , les colonnes etc, tout ce qui pourrait etre necessaire a du calcul numerique .

Merci d'avance, toute aide, conseils sont les bienvenus, car voudrais mieux comprendre le fonctionnement des objets dans vba ( un language facile mais qui pour le coup ne donne pas forcement la main sur les choses et on en sait pas toujurs ce que l'on manipule )

voici une toute petite partie de mon code :

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Option Explicit
Option Base 1
 
Private P_MatDim As Variant
Private P_Matrix As Variant: Private P_Det As Double, P_Init As Variant
 
Private Sub Class_Initialize()
End Sub
 
Property Get MatDim() As Variant
    MatDim = P_MatDim
End Property
 
Public Property Get Matrix() As Variant
    Matrix = P_Matrix
End Property
 
Public Property Let Matrix(ByVal MyVector As Variant)
    P_Matrix = MyVector
    P_MatDim = Array(UBound(MyVector), UBound(MyVector, 2))
 
End Property
 
Public Property Get Det()
    Det = P_Det
End Property
 
    'Initialisation de la matrice
Public Property Let Init(ByVal MyVal As Variant)
    Dim i As Long, MyColVector, j As Long
    Dim MyMatrixT(), MyMatrix, MyValueVector
    Dim MyVect
 
    MyVect = Split(MyVal, ";")
 
        'Nombre de lignes/ colonnes
    P_MatDim = Array(UBound(MyVect) + 1, UBound(Split(MyVect(0), ",")) + 1)
 
        'On redimensionne
    ReDim MyMatrixT(P_MatDim(1), P_MatDim(2))
 
    For i = 0 To UBound(MyVect) 'ligne
        MyValueVector = Split(MyVect(i), ",")
        For j = 0 To UBound(MyValueVector) ' colonne
            MyMatrixT(i + 1, j + 1) = CDbl(MyValueVector(j))
        Next j
    Next i
 
        'Mise à jour
    P_Matrix = MyMatrixT
End Property