XL 2016 Depuis un Module Standard pouvoir Récupérer la Photocopie d'une Classe (dont/Avec) la collection qui est incluse dans le Module de Classe.

laurent950

XLDnaute Accro
Bonjour Le Forum,

J'ai réalisé un Module de classe (CPays) avec une Variable de Type Collection (Coll) qui inclut dans le Module de classe.

Le Principe avec une boucle For je viens Créer une nouvelle instance à chaque itération
de l'objet Pays, dont je me sers pour remplir cette classe.

Je souhaite une fois cette classe remplie consigner cette classe dans la collection qui elle est incluse dans le module de classe.

Par la suite je souhaite appeler cette collection depuis le module standard, car cette collection se trouve dans le module de classe, avec un code pour y retrouver la photocopie de la classe correspondante a ce qui a était précédemment enregistré et remplis !

J'ai réalisé la macro, mais cela ne fonctionne pas.

En Exemple :
j'ai écrit le code, dans la zone de texte sur la Feuil à côté du tableau structurée.
la collection se situe dans le module standard, et cela me renvois les bon résultat.
je souhaite l'inverse la collection dans le module de classe et aucune collection dans le module standard.

Je poste le code qui ne fonctionne pas ci-dessous avec le fichier joint.

Si vous avez l'explication et même la solution je vous remercie car je ne trouve pas la solution après plusieurs recherches ?

Module Standard : Ci-Dessous

VB:
Sub CollectionDansModuleDeClasse()

Dim data As Variant ' ............................................................. 1)
data = Sheets("Collections").ListObjects(1).DataBodyRange.Value2 ' ................ 1)
Dim i As Long ' ................................................................... 1)

Dim PaysGlobal As New ClsPays ' ................................................... 2)

Dim Pays As ClsPays ' ............................................................. 3)

For i = 1 To UBound(data, 1) ' .................................................... 1)
    Set Pays = PaysGlobal.Item(data(i, 1))
    Set Pays = Pays
    Pays.Code = data(i, 1) ' ...................................................... 4)
    Pays.Nom = data(i, 2) ' ....................................................... 4)
    Pays.Capitale = data(i, 3) ' .................................................. 4)
Next i

For i = 1 To UBound(data, 1)
    Set Pays = Pays.TransferCollection(data(i, 1)) ' .............................. Bloque) Un seule Item est remplis avec mauvais code !
        Debug.Print Pays.Code, Pays.Nom, Pays.Capitale
Next i
End Sub

Module De Classe(ClsPays) : Ci-Dessous

Code:
Private mCode As String
Private mNom As String
Private mCapitale As String
Private mCLn As Collection
'
Property Get Code() As String
    Code = mCode
End Property
Property Let Code(ByVal NewValue As String)
    mCode = NewValue
End Property
'
Property Get Nom() As String
    Nom = mNom
End Property
Property Let Nom(ByVal NewValue As String)
    mNom = NewValue
End Property
'
Property Get Capitale() As String
    Capitale = mCapitale
End Property
Property Let Capitale(ByVal NewValue As String)
    mCapitale = NewValue
End Property
'
Property Get PhtosCopieClassWithKey() As String
    Capitale = mCapitale
End Property
'
Public Function TransferCollection(ByVal NewValue As String) As ClsPays
   Set TransferCollection = mCLn(NewValue)
End Function
Private Sub Class_Initialize()
   Set mCLn = New Collection
   End Sub
Public Function Item(ByVal NewValue As String) As ClsPays
   On Error Resume Next
   Set Item = mCLn(NewValue)
   If Err Then
      Set Item = New ClsPays
      Set Item = Me
      mCLn.Add Item, NewValue
   End If
   End Function
 

Pièces jointes

  • Test Module de classe Inclus Object Collection.xlsm
    31.7 KB · Affichages: 6
Dernière édition:

laurent950

XLDnaute Accro
@dysorthographie

Je te remercie pour ce complément d'information que je ne connaissais pas. c'est très intéressant comme méthode.
Il y a certainement une facon pour y arrivé avec VBA autrement pour :
SortedList permet de trier de façons alphabétique les clés de la collection

Je regarderais, le code fait la même chose que mon dernier code, seulement il y a un tri sur la clé code ?
 

laurent950

XLDnaute Accro
@dysorthographie

J'ai trouvé quelques choses d'équivalent, mais qui tri sur l'Item est non sur la Key. et comme l'Item c'est le module de classe dans la collection, je vois pas.

VB:
Sub TrierClesCollection()
    Dim maCollection As Collection
    Dim cle As Variant
    Dim i As Long, j As Long
    Dim temp As Variant
    Dim clésTriées() As Variant
    
    ' Créer une nouvelle collection
    Set maCollection = New Collection
    
    ' Ajouter des éléments à la collection (remplacez cela par votre propre ajout d'éléments)
    maCollection.Add "Banane", "Banane"
    maCollection.Add "Pomme", "Pomme"
    maCollection.Add "Orange", "Orange"
    maCollection.Add "Fraise", "Fraise"
    maCollection.Add "1Banane", "DBanane"
    maCollection.Add "4Pomme", "APomme"
    maCollection.Add "3Orange", "3Orange"
    maCollection.Add "2Fraise", "5Fraise"
    maCollection.Add "6Kiwi", "ZKiwi"
    maCollection.Add "5Mangue", "YMangue"
    maCollection.Add "7Ananas", "XAnanas"
    
    ' Transférer les clés dans un tableau
    ReDim clésTriées(1 To maCollection.Count)
    For i = 1 To maCollection.Count
        clésTriées(i) = maCollection.Item(i)
    Next i
    
    ' Trier les clés dans le tableau
    For i = 1 To UBound(clésTriées) - 1
        For j = i + 1 To UBound(clésTriées)
            If clésTriées(i) > clésTriées(j) Then
                temp = clésTriées(i)
                clésTriées(i) = clésTriées(j)
                clésTriées(j) = temp
            End If
        Next j
    Next i
    
    ' Afficher les clés triées
    For i = 1 To UBound(clésTriées)
        Debug.Print clésTriées(i)
    Next i
End Sub
 
Dernière édition:

laurent950

XLDnaute Accro
Bonjour @RyuAutodidacte

C'est pour @RyuAutodidacte à sa demande suite a message privé avec qui j'avance sur les Mise en forme conditionnelle et les règles de mise en forme conditionnelle.

Je te partage l'avancer de mon travail ici, puis c'est justement en relation liée a la Récupération des Photocopie de module de Classe

Je viens de faire un module de classe qui viens stocker les valeurs de la couleurs d'un cellules Excel.

Test avec la propriété Font

Le Module de classe(TestFontPropertiesFont)
VB:
' Module de classe nommé "TestFontPropertiesFont"
'
'Option Explicit
Private mStrFontProperties As Variant
Private mArrFontProperties As Variant
Private mColorFont() As Variant
'
Private Sub Class_Initialize()
    mStrFontProperties = Array("Background", "Bold", "Color", "ColorIndex", "FontStyle", "Italic", "Name", "OutlineFont", "Shadow", "Size", _
                                "Strikethrough", "Subscript", "Superscript", "ThemeColor", "ThemeFont", "TintAndShade", "Underline")
    End Sub
'
Public Property Get TabProperty() As Variant()
    TabProperty = mColorFont()
End Property
Public Property Let TabProperty(MaVariable() As Variant)
    mColorFont() = MaVariable()
End Property
'
Sub CheckFontProperty(ByVal PropertyName As Range)
    ReDim Preserve mColorFont(LBound(mStrFontProperties) To UBound(mStrFontProperties), 1 To 3)
'
    For i = LBound(mStrFontProperties) To UBound(mStrFontProperties)
        With PropertyName.Font
            mArrFontProperties = Array(.Background, .Bold, .Color, .ColorIndex, .FontStyle, .Italic, .Name, .OutlineFont, .Shadow, .Size, _
                                .Strikethrough, .Subscript, .Superscript, .ThemeColor, .ThemeFont, .TintAndShade, .Underline)
        ' Nom de la propriété "Font"
            mColorFont(i, 1) = mStrFontProperties(i)
        ' Teste la valeur de la Propriété "Font"
            mColorFont(i, 2) = "Test RyuAutodidacte ---->>> | " & CheckVarType(mArrFontProperties(i))
        ' La Valeur de la propriété Font
            mColorFont(i, 3) = "Sans Test Laurent950 ---->>> | " & mArrFontProperties(i)
        End With
    Next i
    ' Stock les résultat dans la variable tableau
    Me.TabProperty() = mColorFont()
End Sub
Function CheckVarType(myVar) As Variant
    Select Case VarType(myVar)
        Case 0 ' vbEmpty
            If Not IsEmpty(myVar) Then CheckVarType = myVar Else CheckVarType = Empty
        Case 1 ' vbNull
            If Not IsNull(myVar) Then CheckVarType = myVar Else CheckVarType = Null
        Case 2 To 6, 14, 17, 20 ' 2 = vbInteger | 3 = vbLong | 4 = vbSingle | 5 = vbDouble | 6 = vbCurrency | 14 = vbDecimal  | 17 = vbByte | 20 = vbLongLong
            If IsNumeric(myVar) Then CheckVarType = myVar Else CheckVarType = Empty
        Case 7 ' vbDate
            If IsDate(myVar) Then CheckVarType = CDate(myVar)
        Case 8 ' vbString
            If myVar <> "" Then CheckVarType = myVar Else CheckVarType = Empty
        Case 9 ' vbObject
            If IsObject(myVar) Then Set CheckVarType = myVar Else Set CheckVarType = Nothing
        Case 10 ' vbError
            If IsError(myVar) Then CheckVarType = Empty
        Case 11 ' vbBoolean
             CheckVarType = myVar
        Case Else
            CheckVarType = Empty
    End Select
End Function

Module Standard(Pour test avec la valeur de la couleur d'une cellule d'un Range)
Module Standard(CheckVariables)
Sub CheckVariablesLocales()
Dim fontTester As TestFontPropertiesFont
Dim wkb As Workbook
Set wkb = ThisWorkbook
Dim wks As Worksheet
Set wks = wkb.Worksheets("Font")
Dim rng As Range
Set rng = Range("A1")
'Set rng = Union(Range("A1"), Range("D1"))
Dim cell As Range
Dim ColorFont As Collection
Set ColorFont = New Collection

' Parcourir les propriétés et stocker les résultats dans les cellules
' Font
For Each cell In rng
Set fontTester = New TestFontPropertiesFont
fontTester.CheckFontProperty cell
ColorFont.Add Item:=fontTester, Key:=CStr(cell.Column)
Next cell

Dim TabTemp() As Variant
For Each fontTester In ColorFont
TabTemp = fontTester.TabProperty
Cells(2, 1 + i).Resize(UBound(TabTemp, 1), UBound(TabTemp, 2)) = TabTemp
i = i + 3
Next fontTester
End Sub

le fichier : CheckVariablesLocales_V1.xlsm

Pour tester les Règles de MCF : Le fichier Classeur Test (Code de Création de MCF Via VBA).xlsm

Paramétrer sur une règles :
CreerRegleCellValue_xlCellValueFormula1
pour test avec l'autre fichier qui récupère les règles MCF (Classeur Test (Récupères MCF Via VBA).xlsm)
en cours de développement.

Sub Compilation()
Dim ws As Worksheet
Dim newFC As FormatCondition
' Supprimer toutes les règles de mise en forme conditionnelle
Set ws = ThisWorkbook.Worksheets(ActiveSheet.Name)
ws.Cells.FormatConditions.Delete
' Céer les régles : Compilation
CreerRegleCellValue_xlCellValueFormula1
' CreerRegleCellValue_xlCellValueFormula1_ET_Formula2
' CreerRegleCellValue_xlExpression
' CreerRegleColorScale_xlColorScale
' CreerRegleDatabar_xlDatabar
' CreerRegleTop10_xlTop10
' CreerRegleIconSet_XlIconSet
' CreerRegleUniqueValues_xlUniqueValues
' CreerRegleTextString_xlTextString
' CreerRegleBlanksCondition_xlBlanksCondition
' CreerRegleTimePeriod_xlTimePeriod
' CreerRegleNoBlanksCondition_xlNoBlanksCondition
' CreerRegleErrorsCondition_xlErrorsCondition
' CreerRegleNoErrorsCondition_xlNoErrorsCondition
End Sub

Aussi cette Astuce et travail ci-dessous et de @RyuAutodidacte alors un très très grand merci a @RyuAutodidacte c'est un super travail et une super astuce 10/10 @RyuAutodidacte
Code:
Sub CheckVariablesLocales()
Dim fcd, indexMFC As Long, ArrFont
    
    indexMFC = 1
    With ActiveSheet
        Set fcd = .Cells.FormatConditions(indexMFC)
    End With
    
    With fcd
        With .Font
        ArrFont = Array(.Background, .Bold, .Color, .ColorIndex, .FontStyle, .Italic, .Name, .OutlineFont, .Shadow, .Size, _
                                    .Strikethrough, .Subscript, .Superscript, .ThemeColor, .ThemeFont, .TintAndShade, .Underline)
            For Each AF In ArrFont
                Debug.Print CheckVarType(AF)
            Next
        End With
    End With
End Sub


Function CheckVarType(myVar) As Variant
    Select Case VarType(myVar)
        Case 0 ' vbEmpty
            If Not IsEmpty(myVar) Then CheckVarType = myVar Else CheckVarType = Empty
        Case 1 ' vbNull
            If Not IsNull(myVar) Then CheckVarType = myVar Else CheckVarType = Null
        Case 2 To 6, 14, 17, 20 ' 2 = vbInteger | 3 = vbLong | 4 = vbSingle | 5 = vbDouble | 6 = vbCurrency | 14 = vbDecimal  | 17 = vbByte | 20 = vbLongLong
            If IsNumeric(myVar) Then CheckVarType = myVar Else CheckVarType = Empty
        Case 7 ' vbDate
            If IsDate(myVar) Then CheckVarType = CDate(myVar)
        Case 8 ' vbString
            If myVar <> "" Then CheckVarType = myVar Else CheckVarType = Empty
        Case 9 ' vbObject
            If IsObject(myVar) Then Set CheckVarType = myVar Else Set CheckVarType = Nothing
        Case 10 ' vbError
            If IsError(myVar) Then CheckVarType = Empty
        Case 11 ' vbBoolean
             CheckVarType = myVar
        Case Else
            CheckVarType = Empty
    End Select
End Function
 

Pièces jointes

  • CheckVariablesLocales_V1.xlsm
    28.5 KB · Affichages: 1
  • Classeur Test (Code de Création de MCF Via VBA).xlsm
    44.3 KB · Affichages: 1
  • Classeur Test (Récupéres MCF Via VBA).xlsm
    37.6 KB · Affichages: 1
Dernière édition:

laurent950

XLDnaute Accro
Bonjour @patricktoulon

Ce que je veux dire par "photocopie" dans le contexte décrit, c'est utiliser ce terme pour signifier la création de plusieurs instances d'une classe, puis l'enregistrement de ces instances dans une collection en vue d'un traitement ultérieur. C'est une manière informelle de décrire ce processus.

Dans mon explication, j'ai une classe nommée TestFontPropertiesFont, et j'en crée plusieurs instances de cette classe en fonction des différentes règles que j'ai à traiter. Chaque instance stocke des propriétés de police (Font) spécifiques à une règle donnée. Ces instances sont ensuite stockées dans la collection ColorFont pour une utilisation ultérieure. Lorsque nous parcourons la collection, nous créons les instances (ou "photocopies" dans ma terminologie) de la classe et accédons aux données stockées dans ces instances pour les afficher dans les cellules.

Peut-être que mon explication aide à mieux comprendre le concept de "photocopie" dans le contexte de mon code.
 

patricktoulon

XLDnaute Barbatruc
oui bon j'avais plus ou moins compris l'intention
le doute m'a habité 30 seconde et demie

après je trouve un peu verbeux ton truc on s'y perd très vite
sachant qu'un collection peut aller et être un enfant de module classe
la chose bien plus simple que cela selon moi

pour te la faire courte un instance de classe avec une collection peux s'affilier sans limite a un instance précédente qui serait alors le parent de l'instance
je l'ai montré avec le xml
et j'irais même plus loin un instance de classe peut être l'enfant l’arrière petit enfant et plus d'elle même
 

laurent950

XLDnaute Accro
Re @patricktoulon

Se serait quelques choses comme cela ?

si je traduit ta réponse :

"Imaginez que vous avez des classes comme 'Directeur,' 'Employé,' et 'Sous-Traitant.' Ces classes sont comme des membres d'une famille. Le 'Directeur' est comme un parent, les 'Employés' sont les enfants, et les 'Sous-Traitants' sont les petits-enfants. Une classe peut être liée à une autre, créant une relation parent-enfant. Cette parenté est stockée dans une collection, comme un arbre généalogique, simplifiant la gestion de ces relations complexes."

Ce code VBA partagé permet de créer une hiérarchie de personnes dans une structure de type arborescente. Les personnes sont organisées en différents niveaux, de "Directeur" jusqu'au "Sous-Traitant," avec "Directeur" étant au sommet de la hiérarchie. Voici comment le code fonctionne en détail :
  1. Création d'instances de Personne : Tout d'abord, le code crée des instances de la classe "Personne" en utilisant la syntaxe Dim NomInstance As New Personne. Chaque instance représente une personne dans la hiérarchie et est associée à un nom, tel que "Directeur," "Chef de Service 1," "Employé 1," etc. Les instances sont stockées dans des variables avec des noms explicites.
  2. Création de la hiérarchie : Ensuite, le code définit la hiérarchie en associant les personnes les unes aux autres. Par exemple, "Chef de Service 1" est associé à "Employé 1" et "Employé 2" en utilisant la méthode AjouterEmployer. De même, "Directeur" est associé à "Chef de Service 1" et "Chef de Service 2" en utilisant la même méthode. Cela crée une structure hiérarchique en cascade.
  3. Affichage de la hiérarchie : Enfin, le code affiche la hiérarchie en appelant la procédure AfficherHiérarchie. Cette procédure prend une personne en tant que paramètre (commençant par le directeur) et un paramètre d'indentation pour afficher la hiérarchie de manière structurée. Elle utilise une boucle pour parcourir les employés d'une personne donnée et récursivement appelle AfficherHiérarchie pour afficher leurs sous-employés.
  4. Classe "Personne" : La classe "Personne" est définie dans le module de classe. Elle contient des propriétés telles que le nom de la personne et une collection appelée "Employer" pour stocker les sous-employés. La méthode AjouterEmployer est utilisée pour ajouter un sous-employé à la collection. La méthode NombreEmployer renvoie le nombre de sous-employés dans la collection.
En résumé, ce code crée et affiche une structure hiérarchique de personnes en utilisant des instances de la classe "Personne" et une collection pour gérer les sous-employés. La procédure récursive AfficherHiérarchie parcourt la hiérarchie et affiche les niveaux de chaque personne, en partant du "Directeur" et descendant jusqu'aux "Sous-Traitants".

Module de classe(Personne)
VB:
' Module de classe nommé "Personne"
Option Explicit

Private mNom As String
Private mEmployer As Collection

Public Property Get Nom() As String
    Nom = mNom
End Property

Public Property Let Nom(ByVal Valeur As String)
    mNom = Valeur
End Property

Public Property Get Employer() As Collection
    Set Employer = mEmployer
End Property

Public Sub AjouterEmployer(Employer As Personne)
    If mEmployer Is Nothing Then
        Set mEmployer = New Collection
    End If
    ' Stock la classe dans la collection
    mEmployer.Add Employer
End Sub

Public Function NombreEmployer() As Integer
    If Not mEmployer Is Nothing Then
        NombreEmployer = mEmployer.Count ' La collection.
    Else
        NombreEmployer = 0
    End If
End Function

Test avec un module standard
Code:
Sub UtiliserPersonnes()
    Dim Directeur As New Personne ' ........... A) Instance du module de classe
        Directeur.Nom = "Directeur"
    
    Dim ChefService1 As New Personne ' ........... B) Instance du module de classe
        ChefService1.Nom = "Chef de Service 1"
    
    Dim ChefService2 As New Personne ' ........... C) Instance du module de classe
        ChefService2.Nom = "Chef de Service 2"
    
    Dim Employe1 As New Personne ' ............... D) Instance du module de classe
        Employe1.Nom = "Employé 1"
    
    Dim Employe2 As New Personne ' ............... E) Instance du module de classe
        Employe2.Nom = "Employé 2"
    
    Dim SousTraitant As New Personne ' ........... F) Instance du module de classe
        SousTraitant.Nom = "Sous-Traitant"
    
    ' Créer la hiérarchie
    ChefService1.AjouterEmployer Employe1 ' ................. Soit (B = ChefService1) avec (D = Employé 1)
    ChefService1.AjouterEmployer Employe2 ' ................. Soit (B = ChefService1) avec (E = Employé 2)
    Directeur.AjouterEmployer ChefService1 ' ............. Soit A avec (B = ChefService1) et (D = Employé 1 et E = Employé 2)
    Directeur.AjouterEmployer ChefService2 ' ............. Soit A avec (C = ChefService2)
    
    ' Afficher la hiérarchie
    ' Directeur encapsule toutes les classes.
    AfficherHiérarchie Directeur, ""
End Sub

Sub AfficherHiérarchie(Personne As Personne, Indentation As String)
    Debug.Print Indentation & Personne.Nom
    If Personne.NombreEmployer > 0 Then
        Dim Pers As Personne
        For Each Pers In Personne.Employer
            AfficherHiérarchie Pers, Indentation & "  "
        Next Pers
    End If
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
a ce niveau de simplicité nul besoin d'utiliser une classe
d'autant plus que tu es limité par le nombre de propriété encodées dans les les properties (let et get)

voila comment je vois les choses
exemple
le module classe s'appelle "Entreprise"
VB:
Public subalterne As New Collection
Public Nom$
Public Prenom$
Public superieur As New Entreprise

et dans un module standard
VB:
Dim maboite As Entreprise
Sub test()
    Set maboite = New Entreprise
    Set directeur = New Entreprise
    directeur.Nom = "rodger"
    directeur.Prenom = "Buck"
    maboite.subalterne.Add directeur, "directeur"

    Set chef_se_service1 = New Entreprise
    chef_se_service1.Nom = "roberty"
    chef_se_service1.Prenom = "paul"
    Set chef_se_service1.superieur = directeur
    directeur.subalterne.Add chef_se_service1, "chef de sevice 1"


    Set chef_se_service2 = New Entreprise
    chef_se_service2.Nom = "rollex"
    chef_se_service2.Prenom = "jaky"
    Set chef_se_service1.superieur = directeur
    directeur.subalterne.Add chef_se_service2, "chef de sevice 2"


    Set secretaire = New Entreprise
    secretaire.Nom = "lablonde"
    secretaire.Prenom = "silvie"
    Set secretaire.superieur = directeur
    directeur.subalterne.Add secretaire, "secretaire"


 
 'on obtient le directeur par la collection de ma boite .subalterne("directeur"
  MsgBox maboite.subalterne("directeur").Nom 


    MsgBox chef_se_service1.Nom    'on obtient le chef de service 1

    MsgBox chef_se_service1.superieur.Nom    'on obtient le directeur

    MsgBox secretaire.Nom 'la secretaire
End Sub
ilva de soit que à partir de maboite tu a tout ce que tu veux
VB:
MsgBox maboite.subalterne("directeur").subalterne("chef de sevice 1").Nom
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
@patricktoulon non tu n'es pas imité dans les propriétés (Let et get)
Code:
 Property let Toto(A,B,C,D, VALUE)
End Property
Property GET Toto(A,B,C,D)
End Property

Si les éléments de la propriété permettent de définir avec pression la valeur à écrire ou à retourner ok;Mais si l'idée est d'utiliser une propriété comme une sub ça devient ridicule !
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
heu robert essaie msgbox secretaire.superieur.nom
et encore la j'ai fourni un exemple simple
ma classe xml montre bien toute les possibilité de la méthode en terme de hiérarchisation
demo.gif
 
Dernière édition:

laurent950

XLDnaute Accro
Property let Toto(A,B,C,D, VALUE) End Property Property GET Toto(A,B,C,D) End Property
Bonsoir @dysorthographie

tu as un exemple simple de ce type de cas avec let et Get
pour passer cela depuis le module standard pour let se serait cela
' Instance de la classe TotoClass
Dim TotoObject As TotoClass
' Créer une instance de la classe TotoClass
Set TotoObject = New TotoClass

' Utiliser la propriété Let pour définir les valeurs A, B, C et D
TotoObject.Toto(1, 2, 3, 4) = 5

cela fonctionne a condition a condition que Get a un autre nom
Property let Toto(A,B,C,D, VALUE)
Var1 = A
Var2 =B
Etc.
End Property
Property GET NameToto()
NameToto = Var2
End Property


je ne suis pas arrivé avec le même nom ?
 

laurent950

XLDnaute Accro
Property let Toto(A,B,C,D, VALUE) End Property Property GET Toto(A,B,C,D) End Property
Pourquoi Let a Value (c'est a dire une variable de plus que Get ?

j'ai essayer
Module standard
VB:
' Module standard
Public TotoObject As TotoClass

Sub UtiliserTotoClass()
    ' Créer une instance de la classe TotoClass
    Set TotoObject = New TotoClass

    ' Utiliser la propriété Let pour définir les valeurs A, B, C et D
    TotoObject.Toto(1, 2, 3) = 4

    ' Utiliser la propriété Get pour obtenir les valeurs A, B, C et D
    Dim ValeurA As Variant
    Dim ValeurB As Variant
    Dim ValeurC As Variant
    Dim ValeurD As Variant

    TotoObject.Toto ValeurA, ValeurB, ValeurC, ValeurD

    ' Afficher les valeurs
    MsgBox "A = " & ValeurA & vbCrLf & _
           "B = " & ValeurB & vbCrLf & _
           "C = " & ValeurC & vbCrLf & _
           "D = " & ValeurD
End Sub

Module de classe(TotoClass)
Code:
' Module de classe (TotoClass)

Private TotoValueA As Variant
Private TotoValueB As Variant
Private TotoValueC As Variant
Private TotoValueD As Variant

Property Let Toto(A As Variant, B As Variant, C As Variant, D As Variant)
    TotoValueA = A
    TotoValueB = B
    TotoValueC = C
    TotoValueD = D
End Property

Property Get Toto(A As Variant, B As Variant, C As Variant, D As Variant) As Variant
    A = TotoValueA
    B = TotoValueB
    C = TotoValueC
    D = TotoValueD
End Property

Comment vous faite le réglage de cela @dysorthographie j'y arrive pas ?
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan