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 :

structure association clé - valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut structure association clé - valeur
    Bonjour,

    Est-ce qu'il existe une structure en VBA, où je pourrais avoir une association clé - valeur?

    Parce que par exemple avec un tableau déclaré de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ListeNumColonnes As Variant
    ListeNumColonnes = Array(-1, -2, 4, -3, 5, 1)
    Je sais que ListeNumColonnes(0) = -1.....etc....

    mais j'aimerais pouvoir par exemple avec un tableau de la forme
    ListeNumColonnes2(12) = 13
    ListeNumColonnes2(3) = 4

    par exemple pour faire une correspondance entre une clé et une valeur.

    Je vous remercie :-)

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je ne voi pas du tout ce que tu cherche a faire, visiblement tu sais un peu près te servire des tableau, au cas ou un lien ici
    http://silkyroad.developpez.com/vba/tableaux/

    Après ta deuxième parti je ne vois pas du tout
    esaye ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'etc....
    'et pour lire une valeur
    msgbox ListeNumColonnes2(12)+ListeNumColonnes2(3)
    Sinon tu peux essayer un tableau a deux dimention

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ListeNumColonnes() As integer 
    redim ListeNumColonnes2(1to2,1 to 12)
    ListeNumColonnes2(1,12) = 13
    ListeNumColonnes2(1,12) = 4
    La valeur ListeNumColonnes2(1,n) corespond a la valeur ListeNumColonnes2(2,n)

    Je ne sais pas si cela t'aide si ce n'est pas le cas il faudra être un peu plus précis
    (au passage en faisant 1 to N tu na pas de tableau(0) les indice commence a 1, tu peu commencer a 5 si ca t'amuse

  3. #3
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut Collection
    Bonjour

    Il suffit de créer une collection pour pourvoir associer une cle et une valeur.
    L'exemple est tire de l'aide de vba permettra facilement de répondre au besoin de thierry_b !

    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
     
    Sub ClassNamer()
        Dim MyClasses As New Collection    ' Crée un objet Collection.
        Dim Num    ' Compteur permettant d'individualiser les clés.
        Dim Msg As String    ' Variable devant contenir  la chaîne d'invite.
        Dim TheName, MyObject, NameList    ' Variants devant contenir les données.
        Do
            Dim Inst As New Class1    ' Crée une nouvelle instance de Class1.
            Num = Num + 1    ' Incrémente d'une unité la valeur de Num, puis
                                ' obtient un nom.
            Msg = "Veuillez affecter un nom à cet objet." & Chr(13) _
            & "Appuyez sur Annuler pour afficher les noms présents" _
            & "dans la collection."
            TheName = InputBox(Msg, "Nommez les éléments de Collection")
            Inst.InstanceName = TheName    ' Place le nom dans l'instance de
                                                    ' l'objet.
            ' Si l'utilisateur a saisi un nom, ajoute  celui-ci à la 
            ' collection.
            If Inst.InstanceName <> "" Then
                ' Ajoute l'objet nommé à la collection.
                MyClasses.Add item := Inst, key := CStr(Num)
            End If
            ' Efface la référence en cours en prévision de la suivante.
            Set Inst = Nothing
        Loop Until TheName = ""
        For Each MyObject In MyClasses    ' Crée une liste des noms.
            NameList = NameList & MyObject.InstanceName & Chr (13)
        Next MyObject
        ' Affiche la liste des noms dans une zone de message.
        MsgBox NameList, , "Noms des instances présentes dans la" _
         & "collection MyClasses"
     
        For Num = 1 To MyClasses.Count    ' Supprime le nom de la collection.
            MyClasses.Remove 1                ' Puisque les collections sont
                                                    ' réindexées automatiquement,
                                                    ' supprime le premier membre à
        Next                                        ' chaque itération.
    End Sub

Discussions similaires

  1. [MySQL] Prendre la valeur d'une table et l'associer à la valeur d'une autre
    Par gandolfi dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/02/2008, 08h04
  2. associer une valeur pour case à cocher
    Par frans_2000 dans le forum Modélisation
    Réponses: 6
    Dernier message: 12/01/2008, 01h15
  3. comment associer deux valeurs
    Par dreeve dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2007, 17h23
  4. [RegEx] Gérer deux possibilités et leur associer une valeur 0/1
    Par speed_man002 dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2005, 18h32
  5. [MFC] comment associer 2 valeurs à une ComboBox
    Par drinkmilk dans le forum MFC
    Réponses: 2
    Dernier message: 13/04/2005, 11h41

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