IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

creation d'un dictionnaire avec un objet en valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut creation d'un dictionnaire avec un objet en valeur
    Bonjour,

    Je m'adresse aux connaisseur du language objet:

    Je suis sur un projet:
    j'ai un document qui repertorie des données de PnL (profit & loss) de differents perimetres dans un workbook. On y decouvre tous les perimetres et sous perimetres et sous sous perimetres etc.
    Dans ma feuille de mon projet , j'ouvre donc ce workbook pour y recuperer des donnéespour les perimetres qui m'interessent
    Je decide donc de recuperer les differents perimetres qui m'interessent , et qui sont sur une de mes feuilles de mon thisworkbook pour pouvoir les recherc her dans mon document que j'ai presenté en premier.
    Pour cela je decide de creer un dictionnaire car je m'occupe de recuperer seuelement certains perimetres qui sont souvent la somme de d'autres perimetres. Ce dictionnaire aurait donc le nom du perimetre qui m'interesse en clee et en valeur j'aimerais mettre un objet. Cet objet j'ai besoin d'aide pour le creer, pour l'instant j'ai pas de probleme a donner une valeur et creer des attributs , mais je voudrais que cet objet puisseavoir plusieurs sous parties( sous perimetres) que l'on puisse ajouter des sous perimetres, qu'il ai comme attribut le nom . et pouvoir creer un nombre de sous attribut dependant du perimetre, donc pas qu'en lecture mais aussi en ecriture. Voila, merci de votre aide je met mon code qui marche tres bien , je demande juste quelques conseils pour creer cet objet , j'espere avoir ete claire , merci d'avance.
    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
    Option Explicit
        'dictionnaire de definition de perimetres
    Function DicoPerimetres(ByVal Source As Workbook) As Dictionary
    'definition des variables
    Dim TheRange As Range: Dim AllRange As Range
    Dim myrange As Range: Dim CoinG As Range
    Dim Mydico As New Dictionary
    Dim MyBreachs As Breach
     
    Dim Adresse As String
    Dim i As Long
     
        'determiner le range dans le fichier source
    Source.Worksheets("RATES Limit Breach").UsedRange.Select
    Set CoinG = Selection.Find(what:="perimetres")
    Adresse = CoinG.Address
    Set TheRange = Source.Worksheets("RATES Limit Breach").Range(Adresse)
    Set AllRange = Source.Worksheets("RATES Limit Breach").Range(TheRange.Offset(1), TheRange.End(xlDown))
     
        AllRange.Select
            'creation du dico
        For Each myrange In AllRange
            If Not Mydico.Exists(myrange.Value) Then
                Set MyBreachs = New Breach
                MyBreachs.S_P1 = myrange.Offset(, 0).Value
                MyBreachs.S_P2 = myrange.Offset(, 4).Value
     
                Mydico.Add myrange.Value, MyBreachs
                    'vidage de l'objet
                Set MyBreachs = Nothing
            End If
            Next myrange
                'on copie le resultat dans ma fonction
            Set GetBreach = Mydico
    'fermeture dico et workbook
    Set Mydico = Nothing
    End Function
    et mes attribut mis juste sous forme de variables globale dans un module de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
     
    Public S_P1 As String
    Public S_P2 As String

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pas certain d'avoir tout compris ( ni lu ce genre de laïus abscons ), bref peut-être via une recherche ?

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    en fait c'est bon j'ai créé mon objet je le poste si ca interesse

    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test2()
    Dim valeur As String
    Dim tableaures As Variant
    tableaures = Array("EU LKB", "NYK Swaps")
    Dim Rate As New Perimetre
    Rate.InitializeWithValues tableaures
     
    'Debug.Print " le nombre de sperimetre : "; Rate.Nb_SPerimetre
    valeur = "EU LQB"
    Call Rate.AjoutS_Perimetre(valeur)
    'Debug.Print " le nombre de sperimetre : "; Rate.Nb_SPerimetre
    tableaures = Rate.Nom_SPerimetre
    End Sub
    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
    Option Explicit
    Option Base 1
     
    Dim NbSPerimetre As Integer, NomSPerimetre()
     
        'initialisation de la classe
    Private Sub Class_Initialize()
    NbSPerimetre = 0
    End Sub
        'initialisation des atribut
    Public Sub InitializeWithValues(ByVal TabNomPerimetre As Variant)
    Dim Nbvalue As Integer
    Erase NomSPerimetre
    Nbvalue = UBound(TabNomPerimetre)
        'creation d'un tableau de perimetre redimentionne
    ReDim NomSPerimetre(Nbvalue)
    NomSPerimetre = TabNomPerimetre
        'deuxieme atribut mis a jour
    NbSPerimetre = Nbvalue
    End Sub
     
    Public Property Get Nom_SPerimetre() As Variant
    Nom_SPerimetre = NomSPerimetre
    End Property
     
    Public Property Get Nb_SPerimetre() As Integer
    Nb_SPerimetre = NbSPerimetre
    End Property
     
    Public Sub AjoutS_Perimetre(Nom As String)
        NbSPerimetre = NbSPerimetre + 1
        ReDim Preserve NomSPerimetre(NbSPerimetre)
        NomSPerimetre(NbSPerimetre) = Nom
    End Sub
     
    Public Sub Supprimer(S_Perimetre)
        Dim rang As Integer
        Dim NbValeur As Integer
        NbSPerimetre = NbSPerimetre - 1
            'trouver le rang du Sous perimetre a supprimer
        rang = Application.Match(S_Perimetre, NomSPerimetre, 0)
            'calculer le nombre de valeur
        NbValeur = UBound(NomSPerimetre)
            'remplacer les deux valeurs
        NomSPerimetre(rang) = Nom_SPerimetre(NbValeur)
            'redimentionnement -1
        ReDim Preserve NomSPerimetre(NbValeur - 1)
    End Sub
    en fait j'ai créé un objet c'est juste ca que je cherchais. Je cherche a pouvoir modifier le contenu d'un perimetre, donc j'ai créé un objet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44
  2. inclinaison d'un texte avec l'objet ID3DXFont v2
    Par tibyann dans le forum DirectX
    Réponses: 3
    Dernier message: 30/06/2004, 14h27
  3. inclinaison d'un texte avec l'objet ID3DXFont
    Par tibyann dans le forum DirectX
    Réponses: 8
    Dernier message: 21/06/2004, 16h00
  4. Animations avec différents objet
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 09/06/2004, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo