Bonjour,
comme le titre l'indique je voudrai savoir s'il est possible de retrouver l'index d'une collection à partir du résultat, comme en php avec la fonction array_flip.
Merci de votre aide.
Version imprimable
Bonjour,
comme le titre l'indique je voudrai savoir s'il est possible de retrouver l'index d'une collection à partir du résultat, comme en php avec la fonction array_flip.
Merci de votre aide.
Un exemple valant mieux qu'un long.....L'inverse, je ne sais pas car MsgBox collect(5) donne également 5Code:
1
2
3
4
5
6
7
8 Sub test() Dim collect As New Collection, i As Integer For i = 1 To 15 Clé = "Donnée" & CStr(i) collect.Add i, Clé Next MsgBox collect("Donnée5") End Sub
Bonne soirée
Bonsoir,
justement c'était l'inverse qui m'intéressait.
Et ton exemple n'est pas très bien adapter, je pense.
On a bienCode:
1
2
3
4
5
6
7
8
9 Sub test() Dim collect As New Collection, i As Integer For i = 1 To 15 Index = "Index" & CStr(i) Donnee = "Donnée" & CStr(i) collect.Add Donnee, Clé Next End Sub
MsgBox collect("Index5") = "Donnée5"
Or je voudrai avoir
MsgBox collect.function_inverse("Donnée5") = "Index5"
Merci.
C'est quoi, clé, dans ton exemple ?Citation:
collect.Add Donnee, Clé
Mais sans doute n'est qu'une erreur de variable
Mon exemple intègre une clé qui pourrait être différent de i
Code:
1
2
3
4
5
6
7
8 Sub test() Dim collect As New Collection, i As Integer For i = 1 To 26 Clé = "Donnée " & Chr(64 + i) collect.Add i, Clé Next MsgBox collect("Donnée Z") '=> 26 End Sub
Bonsoir,
effectivement, je me suis trompé, Clé = Index.
Je me suis peut-être mal exprimé, mais je voudrais, à partir du résultat d'une collection, retrouver son index.
Avec ton exemple, je voudrais la fonction function_inverse, si elle existe, qui permet d'avoir collect.function_inverse(5)="Donnée5" ou collect.function_inverse(26)="Donnée Z"
J'espère m'être bien exprimer.
Merci.
Je reprends ton exempleCode:
1
2
3
4
5
6
7
8
9
10
11 Sub test() Dim collect As New Collection, i As Integer For i = 1 To 26 Clé = "Clé " & Chr(64 + i) donnee = "Donnée " & CStr(i) collect.Add donnee, Clé Next 'MsgBox collect("Donnée 5") 'Ne fonctionne pas MsgBox collect("Clé E") 'Fonctionne MsgBox collect(5) 'fonctionne End Sub
Bonsoir,
justement c'est la ligne qui ne fonctionne pas qui m'intéresse, il manque une fonction pour qui renvoie "Clé E"
collect.fonction_manquante("Donnée 5")="Clé E"
Merci pour ton aide.
Désolé mais je n'ai pas autre chose à te proposerEditCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub test() Dim collect As New Collection, i As Integer For i = 1 To 26 clé = "Clé " & Chr(64 + i) donnee = "Donnée " & CStr(i) collect.Add donnee, clé Next 'MsgBox collect("Donnée 5") 'Ne fonctionne pas MsgBox collect("Clé E") 'Fonctionne MsgBox collect(5) 'fonctionne For i = 1 To collect.Count If collect(i) = "Donnée 5" Then Exit For End If Next MsgBox collect(i) End Sub
Jète un oeil à "Item, méthode" dans l'aide en ligne.
Bonsoir,
j'avais déjà essayer de faire la boucle mais ça ne renvoie que le i, et l 'aide en ligne ne me donne rien d'intéressant.
Je vais faire deux collections (même si c'est pas très propres), je pense que c'est la solution la plus simple, l'un avec les résultats et l'autre avec les clés (pour toi) ou index (pour moi), et avec le chiffre i j'ai bien la correspondance,...
Merci tout de même pour ton aide.
Je te donne un dernier exemple qui pourrait peut être te suggérer une autre solution
Si tu utilises la clé d'une autre manière...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub Collection_Créer() Dim MaColect As New Collection ' Rempli la collection MaColect.Add "Et alors ? ", "Un" MaColect.Add "C'est ", "Deux" MaColect.Add "quoi ", "trois" MaColect.Add "ton problème ?", "Quatre" 'Affichage Debug.Print MaColect("Un") & MaColect("Deux") & MaColect("trois") & MaColect("Quatre") MsgBox MaColect("Un") & MaColect("Deux") & MaColect("trois") & MaColect("Quatre") LeMot = "un" MsgBox MaColect(LeMot) End Sub
Comme je ne connais pas le problème, je ne peux que suggérer...
Bonne soirée