jpl38 | Les tableaux dans les modules de classe, c'est la galère. Si ça peut t'aider, ce qui suit fonctionne : Dans la feuille Excel, je mets une valeur quelconque en B7, et dans la plage C5 à C7 les valeurs 1,2,3. On récupère cette plage dans le tableau mcours, comme le montre le debug.print final dans la fenêtre Exécution. Module de classe Stock : Code :
- Option Explicit
- Private mCours As Variant
- Property Get Cours() As Variant
- Cours = mCours
- End Property
- Property Let Cours(ByVal Cours As Variant)
- mCours = Cours
- End Property
| Module normal : Code :
- Option Explicit
- Sub Ajout_MAJ()
- Dim StockA As New Stock
- Dim TabTemp1 As Variant, TabTemp2() As Variant, i As Long, j As Long, k As Long
- Dim LastRow As Integer
- LastRow = Range("B" & Rows.Count).End(xlUp).Row
- 'On suppose LastRow plus grand que 5
- 'On récupère la plage dans un tableau bidimensionnel, que l'on ramène à une seule dimension
- TabTemp2 = Range(Cells(5, 3), Cells(LastRow, 3)).Value
- i = LBound(TabTemp2, 1): j = UBound(TabTemp2, 1)
- ReDim TabTemp1(i To j)
- For k = i To j
- TabTemp1(k) = TabTemp2(k, 1)
- Next k
- 'on affecte ce tableau à la variable mcours, avec un property Let
- StockA.Cours = TabTemp1
- 'Vérification (utilise le property Get)
- For k = i To j
- Debug.Print StockA.Cours(k)
- Next k
- End Sub
| Je me suis inspiré de : https://support.microsoft.com/en-us [...] d-property et pour tansformer le tableau en deux dimensions en un tableau unidimensionnel de : http://www.commentcamarche.net/for [...] ableau-vba
Message édité par jpl38 le 23-03-2018 à 13:28:26
|