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 :

[VBA] Dictionaire - Procédure Porperty Let / Property Get [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut [VBA] Dictionaire - Procédure Porperty Let / Property Get
    Bonjour,

    Je vous remercie encore une fois d'avance pour l'aide que vous allez m'apporter.

    Voici le code sur lequel je rencontre un problème :
    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
    Sub Macro()
     
    Dim Dictionary As Scripting.Dictionary, Dictionary2 As Scripting.Dictionary
    Dim value As Integer, value1 As Integer
     
    Set Dictionary = New Dictionary
    Set Dictionary2 = New Dictionary
     
    Dictionary.Add 45, 98
    Dictionary.Add 96, 32
    Dictionary.Add 25, 45
    Dictionary.Add 10, 12
    Dictionary.Add 15, 18
     
    Dictionary2.Add "test", Dictionary
     
    value = Dictionary.Items(0)
    value1 = Dictionary2("test").Items(0)
     
    End Sub
    Je crée deux dictionnaires. Dans celui qui se nomme dictionary, j'associe des clés à des valeurs. Pour le dictionary2, j'associe une clé au dictionary
    Quand je souhaite obtenir l'items 0 du dictionary, value prend la valeur 98. Mais je souhaite pouvoir obtenir cette valeur en partant du dictionary2 et en utilisant le .items

    J'ai pensé au code ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value1 = Dictionary2("test").Items(0)
    mais j'ai un message d'erreur "La procédure property let n'est pas définie et la procédure property get n'a pas renvoyé d'objet. Je suppose que ma façon de m'y prendre n'est pas la bonne. Pouvez-vous m'indiquer une piste de réflexion pour résoudre mon problème.

    Merci, bon après-midi,

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    value = Dictionary(0)
    value1 = Dictionary2("test")(0)
    Value2 = Dictionary2("test")(value)

  3. #3
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour à vous,

    Ci-dessous une petite modification de votre code qui permet de le rendre fonctionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub testDJZIFE()
        Dim Dict As New Scripting.Dictionary, Dict2 As New Scripting.Dictionary, Tmp As Scripting.Dictionary
        Dict.Add 10, 24
        Dict.Add 20, 36
        Set Dict2("test") = Dict
        Set Tmp = Dict2("test")
        MsgBox Dict.Items(0)
        MsgBox Tmp.Items(0)
    End Sub
    Pour une raison que j'ignore, Excel semble ne pas être capable de reconnaître que l'objet qui se trouve dans le 2ème dictionnaire est lui-même un dictionnaire.
    Le problème est intéressant. Je regarde si je trouve quelque chose sur le sujet.

    Cordialement

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour dysorthographie,

    Je n'avais pas vu votre message lorsque je me suis intéressé au sujet.

    Malheureusement, je n'arrive pas à rendre fonctionnel le code que vous fournissez.
    Certes, il n'y a plus d'erreur. Mais lorsque j'imprime les valeurs obtenues, il y a comme un problème (j'obtiens des chaînes vides).

    M'y suis-je mal pris ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 20
    Par défaut
    Bonjour Ben_L,

    Merci pour cette solution !

    @dysorthographie Merci mais cette solution ne répondait pas à ma problématique.

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

Discussions similaires

  1. Property get set let
    Par carryPAR dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/04/2017, 14h18
  2. [AC-2003] Probleme property let et get
    Par maclolo2 dans le forum VBA Access
    Réponses: 16
    Dernier message: 20/08/2012, 20h08
  3. Property get, property let
    Par Bowen dans le forum WinDev
    Réponses: 3
    Dernier message: 20/11/2007, 11h08
  4. property let / property get.
    Par alsimbad dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/09/2007, 21h53
  5. Active X, Property Get, Let pour Icone
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/04/2007, 15h27

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