Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/07/2009, 15h24   #1
Membre du Club
 
Inscription : novembre 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 186
Points : 68
Points : 68
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 :
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 :-)
thierry_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 20h00   #2
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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 :
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 :
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
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 23h02   #3
Membre habitué
 
Développeur informatique
Inscription : janvier 2009
Messages : 124
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2009
Messages : 124
Points : 139
Points : 139
Envoyer un message via MSN à Lynx92260
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 :
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
Lynx92260 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h00.


 
 
 
 
Partenaires

Hébergement Web