laurent950
XLDnaute Barbatruc
Bonsoir,
Difficulté selon que l'ont type la variable tableau dans le module de classe à renvoyer dans le module standard :
Exemple avec 3 cas dont 1 qui fonctionne pas ?
Merci à ceux qui auront la réponse à mon interrogation ?
Cas N° 1
Module standard : Test_Double_Fonctionne
Cas N° 1
Module de classe : CalqueCulatrice
Cas N° 2
Module de classe : CalqueCulatrice
Cas N° 3
Module de classe : CalqueCulatrice
laurent
Difficulté selon que l'ont type la variable tableau dans le module de classe à renvoyer dans le module standard :
Exemple avec 3 cas dont 1 qui fonctionne pas ?
VB:
J’essaie de faire passer une (variable tableau de type Double privé) d’un module de classe vers un module standard.
Pour exemple : J’ai fait avec 3 cas différents pour le renvoi avec la lecture GET du module de classe.
Cas N° 1 Fonctionne Typé Double : Public Property Get TabDone()
Cas N° 2 Fonctionne Pas Typé Double : Public Property Get TabDone() as Double
Cas N° 3 Fonctionne Typé Variant : Public Property Get TabDone() as Variant
J’ai créé une table de multiplication pour le teste. Cette variable tableau privé du module de classe est remplis avec sa procédure :
- result qui se trouve dans le GET.
La procédure : result Remplis cette variable tableau Typé Double selon le Cas N°1 et N°2 ou Variant selon le cas N°3
1 - un module standard simple avec :
- Une variable Tableau
- La variable du Module de classe soit : resT
- Et une fonction de lecture du module de classe Get : TabDone
- La fonction qui renvois ce que je récupère du module de classe vers ma variable tableau :
- TabCalcul = resT.TabDone
2 – Le module de classe est composé :
- La propriété de lecture GET (Cas N°1 et N°2 en Double) et (Cas N°3 en Variant)
- La procédure qui remplit la variable tableau vers le module de classe : result
- J’ai donc testé 3 cas :
- Les Cas N°1 et N°3 Fonctionne Bien (Mais La propriété de lecture Get est écrite de deux façon différente en fonction du type de la (variable Tableau privé) suivant qu’elle est Typé Double ou Variant.
La question est la suivante pourquoi Le cas N° 2 ne Fonctionne pas pour cette variable tableau qui est Typé en double ?
Voir Cas N°3 Fonctionne très bien en Variant Mais Non compatible Pour le Type Double Cas N°2
Lorsque cette Variable est différente de Variant écrire comme l’exemple du cas N°1 ?
Y a-t-il une explication (Bien que je pense que le faite de pas noté le type de renvois pour le Cas N°1 doit être par Default de Type Variant ? mais j’en suis pas sur.
Merci à ceux qui auront la réponse à mon interrogation ?
Cas N° 1
Module standard : Test_Double_Fonctionne
VB:
Sub TestVarTabModuleDeClasse()
' Cas N° 1 Fonctionne avec l'ecriture du GET non Typé lors du renvois.
' -------------------------------------------------------------------
' Création du variable tableau de Type Double avec statut privé dans le Module de classe "CalqueCulatrice"
' -----> Private mTabCalcul() As Double
' Puis renvois de cette variable Tableau dans le Module standard :
' ------> Test_Double_Fonctionne
' Reception du resultat au moyen de la lecture du module de classe GET
' ------> TabCalcul = resT.TabDone
' Fonctionne écrit ainsi.
' Public Property Get TabDone()
' ------> Normalement l'écriture doit se faire ainsi :
' -----------> Public Property Get TabDone() as Double
' Mais cela ne fonctionne avec cette écriture
' 1)
' Module de classe CalqueCulatrice
Dim resT As CalqueCulatrice
' resT Variable Typé Module du module de classe "CalqueCulatrice"
Set resT = New CalqueCulatrice
' 2)
' Variable tableau Typé Double
Dim TabCalcul() As Double
' 3)
' TabCalcul (Tableau 2 D de type Double)
' Variable de lecture privé de la classe "Get TabDone" Typé en Renvois Double.
TabCalcul = resT.TabDone
' 4)
' Copie dans la Feuille le résultat du tableau.
Cells(4, 2).Resize(UBound(TabCalcul, 1), UBound(TabCalcul, 2)) = TabCalcul
End Sub
Cas N° 1
Module de classe : CalqueCulatrice
VB:
Private mTabCalcul() As Double
Public Property Get TabDone()
' Devrais être écrit ainsi : Public Property Get TabDone() as double (Mais Fonctionne pas) Voir Cas N°2
' ------------------------------------------------------------------------------------------------------
' Procedure qui remplis la variable tableau : mTabCalcul
result
' Renvois du resultat du tableau "mTabCalcul" dans le module standard
TabDone = mTabCalcul
End Property
Private Sub result()
' Dimension de la variable tableau 2 D Privé au module de classe "mTabCalcul".
ReDim Preserve mTabCalcul(1 To 10, 1 To 10)
' Boucle pour les calcule des resultats stocké dans de la variable tableau 2 D Privé au module de classe "mTabCalcul".
For i = LBound(mTabCalcul, 1) To UBound(mTabCalcul, 1)
For j = LBound(mTabCalcul, 2) To UBound(mTabCalcul, 2)
mTabCalcul(i, j) = i * j
Next j
Next i
End Sub
Cas N° 2
Module de classe : CalqueCulatrice
VB:
Private mTabCalcul() As Double
Public Property Get TabDone() As Double
' Devrais être écrit ainsi : Public Property Get TabDone() (Fonctionne) Voir Cas N°1
' ----------------------------------------------------------------------------------
' Procedure
result
' Renvois du resultat du tableau "mTabCalcul" dans le module standard
TabDone = mTabCalcul
End Property
Private Sub result()
' Dimension de la variable tableau 2 D Privé au module de classe "mTabCalcul".
ReDim Preserve mTabCalcul(1 To 10, 1 To 10)
' Boucle pour les calcule des resultats stocké dans de la variable tableau 2 D Privé au module de classe "mTabCalcul".
For i = LBound(mTabCalcul, 1) To UBound(mTabCalcul, 1)
For j = LBound(mTabCalcul, 2) To UBound(mTabCalcul, 2)
mTabCalcul(i, j) = i * j
Next j
Next i
End Sub
Cas N° 3
Module de classe : CalqueCulatrice
VB:
Private mTabCalcul() As Variant
Public Property Get TabDone() As Variant
' Devrais être écrit ainsi : Public Property Get TabDone() as Double (Fonctionne Pas Typé Double) Voir Cas N°2
' -------------------------------------------------------------------------------------------------------
' Devrais être écrit ainsi : Public Property Get TabDone() (Fonctionne Pas Typé Double) Voir Cas N°1
' -------------------------------------------------------------------------------------------------------
' Procedure
result
' Renvois du resultat du tableau "mTabCalcul" dans le module standard
TabDone = mTabCalcul
End Property
Private Sub result()
' Dimension de la variable tableau 2 D Privé au module de classe "mTabCalcul".
ReDim Preserve mTabCalcul(1 To 10, 1 To 10)
' Boucle pour les calcule des resultats stocké dans de la variable tableau 2 D Privé au module de classe "mTabCalcul".
For i = LBound(mTabCalcul, 1) To UBound(mTabCalcul, 1)
For j = LBound(mTabCalcul, 2) To UBound(mTabCalcul, 2)
mTabCalcul(i, j) = i * j
Next j
Next i
End Sub
laurent
Pièces jointes
Dernière édition: