Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sabzzz

XLDnaute Junior
Bonjour,

est il possible de récupérer le nom de la variable MesArrays(1) c'est à dire "a2" dans ce cas
merci! isa

VB:
Sub test()
Dim a1 As Variant, a2 As Variant, a3 As Variant, MesArrays As Variant
a1 = Range("A1:A4").Value
a2 = Range("B1:B4").Value
a3 = Range("C1:C4").Value
MesArrays = Array(a1, a2, a3)

MsgBox MesArrays(1)(1, 1)  ' la valeur = Range("B1")
'MsgBox MesArrays(1)  ?  'récupérer le nom de la variable MesArrays(1) c'est à dire "a2"

End Sub
 
VB:
MsgBox MesArrays(0)(1,1)
merci! mais ce n'est pas ça, cela retourne la valeur de Range( "A1")
et non pas le nom de la variable a1

je mets un autre exemple qui sera plus compréhensible ( en tous cas je l'espère )
merci! pour toutes vos réponses
isa

VB:
Sub test()
Dim a1, a2, a3, MesArrays
a1 = Array(15, 16, 17)
a2 = Array(25, 26, 27)
a3 = Array(35, 36, 37)
MesArrays = Array(a1, a2, a3)

Debug.Print MesArrays(1)(1)  ' retourne 26
Debug.Print Evaluate(MesArrays(0)) 'Comment récupérer a1 ? et non pas la valeur 15

End Sub
 
Bonjour
Pas sur que cela te convienne, mais en passant pas des zones nommées😕
Sub test()
Dim a1 As Variant, a2 As Variant, a3 As Variant, MesArrays As Variant
Set a = ThisWorkbook.Names.Add("a", Range("A1:B4"))
Set b = ThisWorkbook.Names.Add("a", Range("A1:B4"))
Set c = ThisWorkbook.Names.Add("a", Range("A1:B4"))

MesArrays = Array(a, b, c)

MsgBox ThisWorkbook.Names(MesArrays(0).Name).RefersToRange.Cells(1, 1)
MsgBox MesArrays(0).Name 'récupérer le nom de la variable MesArrays(1) c'est à dire "a"

End Sub
 
Merci d'avoir confirmé qu'il n'existe pas de méthode pour faire ça,
avec les idées reçues ici j'ai contourné le problème de cette façon :
VB:
Sub test()
Dim a1, a2, a3, MesArrays, MesArraysString
a1 = Array(15, 16, 17)
a2 = Array(25, 26, 27)
a3 = Array(35, 36, 37)
MesArrays = Array(a1, a2, a3)
MesArraysString = Array("a1", "a2", "a3")

For i = LBound(MesArrays) To UBound(MesArrays)
 Debug.Print MesArrays(i)(0) & " provenant de " & MesArraysString(i)
 Next i
End Sub
 
Inutile de bricoler :
VB:
Sub test()
Dim a1, a2, a3, MesArrays
a1 = Array(15, 16, 17)
a2 = Array(25, 26, 27)
a3 = Array(35, 36, 37)
MesArrays = Array(a1, a2, a3)
For i = LBound(MesArrays) To UBound(MesArrays)
    Debug.Print MesArrays(i)(0) & " provenant de a" & i + 1
Next i
End Sub
 
bonjour
on pourrait construire un object myArrays avec une variable type et ainsi lui donner tout les properties que l'on veut

VB:
Type arrays
    name As String
    items As Variant
End Type


Sub test()
    Dim myArrays(1 To 3) As arrays
    myArrays(1).items = Array(15, 16, 17): myArrays(1).name = "a1"
    myArrays(2).items = Array(25, 26, 27): myArrays(2).name = "a2"
    myArrays(3).items = Array(35, 36, 37): myArrays(3).name = "a3"
    For i = 1 To UBound(myArrays)
        Debug.Print "Nom = " & myArrays(i).name & " array= " & Join(myArrays(i).items, ",")
    Next i
End Sub
 
re
et juste pour le fun on fait un arrayd'arrays
VB:
Sub test()
Dim MesArrays
MesArrays = Array(Array("a1", Array(15, 16, 17)), Array("a2", Array(25, 26, 27)), Array("a3", Array(32, 54, 87)))
For i = LBound(MesArrays) To UBound(MesArrays)
    Debug.Print "nom: " & MesArrays(i)(0) & " items : " & Join(MesArrays(i)(1))
Next i
End Sub
c'est plus facilement implémentable avec une variable type
patrick
 
Bonsoir,

Avec un dictionnaire aussi :

VB:
Sub TestDico()
    Dim MesArrays As Object
        Set MesArrays = CreateObject("Scripting.Dictionary")
    MesArrays.Add "a1", Array("A1", "A2", "A3")
    MesArrays.Add "a2", Array("B1", "B2", "B3")
    MesArrays.Add "a3", Array("C1", "C2", "C3")
  
    ' Boucler sur les clés et Items
    For Each key In MesArrays.Keys
        Debug.Print "Clé : " & key & " item : " & Join(MesArrays.Item(key))
    Next key
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
175
Réponses
12
Affichages
895
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
74
Réponses
3
Affichages
595
Retour