Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA. Avoir un tableau indexé sur un élément

2 réponses
Avatar
HD
Bonjour,

Je voudrais pouvoir avoir un tableau dans lequel je pourrais accéder aux
données à partir d'un des 2 éléments de chaque donnée.

Par exemple, avec un tableau de ce type :

Qté = Tableau (Fruit)

L'indexe serait donc directement le fruit et j'obteindrait les quantités.
Ainsi je n'aurais pas à parcourir tout le tableau jusqu'à ce que mon fruit
corresponde à celui recherché.

26 = Tableau ( "Banane" )

Plutôt que d'avoir :

For i = 1 to Tableau.Count
If tableau(i,1) = "Banane" then Qté = tableau ( i,2)
Next

Merci d'avance pour votre aide... En espèrant avoir été assez clair...
--
@+
HD

2 réponses

Avatar
Hervé
Salut,
Essai avec une collection :

Sub Fruit()
Dim Col As Collection

Set Col = New Collection

With Col
.Add 15.5, "Pomme"
.Add 28.95, "Pêche"
.Add 12, "Abricot"
End With

MsgBox Col("Pêche")

Set Col = Nothing
End Sub

Hervé.

"HD" a écrit dans le message news:

Bonjour,

Je voudrais pouvoir avoir un tableau dans lequel je pourrais accéder aux
données à partir d'un des 2 éléments de chaque donnée.

Par exemple, avec un tableau de ce type :

Qté = Tableau (Fruit)

L'indexe serait donc directement le fruit et j'obteindrait les quantités.
Ainsi je n'aurais pas à parcourir tout le tableau jusqu'à ce que mon fruit
corresponde à celui recherché.

26 = Tableau ( "Banane" )

Plutôt que d'avoir :

For i = 1 to Tableau.Count
If tableau(i,1) = "Banane" then Qté = tableau ( i,2)
Next

Merci d'avance pour votre aide... En espèrant avoir été assez clair...
--
@+
HD




Avatar
Daniel.M
Bonjour,

On remplace PlageQté et PlageFruit par les bonnes plages.

Dim n as Variant

n = Application.Index(PlageQté, Application.Match("Banane",PlageFruit,0))
' ou encore
n = Application.VLookup("Banane", Tableau, 2,0)

If IsError(n) Then
msgbox "Pas de banane dans la plage fruit"
Else
msgbox "Qté associée à Banane = " & n
End If

Salutations,

Daniel M.

"HD" wrote in message
news:
Bonjour,

Je voudrais pouvoir avoir un tableau dans lequel je pourrais accéder aux
données à partir d'un des 2 éléments de chaque donnée.

Par exemple, avec un tableau de ce type :

Qté = Tableau (Fruit)

L'indexe serait donc directement le fruit et j'obteindrait les quantités.
Ainsi je n'aurais pas à parcourir tout le tableau jusqu'à ce que mon fruit
corresponde à celui recherché.

26 = Tableau ( "Banane" )

Plutôt que d'avoir :

For i = 1 to Tableau.Count
If tableau(i,1) = "Banane" then Qté = tableau ( i,2)
Next

Merci d'avance pour votre aide... En espèrant avoir été assez clair...
--
@+
HD