Microsoft 365 Tableaux emboités

  • Initiateur de la discussion Initiateur de la discussion Lolote83
  • Date de début Date de début

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 !

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
J'ai des tableaux "array" défini et je voudrais les emboiter.
J'y arrive facilement comme le montre le code ci-dessous mais j'aurais aimé le faire via une boucle car il se peut que j'ai jusqu'à 10 array.

L'exemple donné est simplifié à 3 array

VB:
Sub TableauEmboités()
    Dim Tablo1(1 To 3)                      'Pour écriture 1
    
    xTab1 = Array("a", "b", "c", "d")
    xTab2 = Array("e", "f", "g", "h")
    xTab3 = Array(1, 2, 3, 4)
    
    '------------------------------------- Ecriture 1
    Tablo1(1) = xTab1
    Tablo1(2) = xTab2
    Tablo1(3) = xTab3
    
    '------------------------------------- Ecriture 2
    Tablo2 = Array(xTab1, xTab2, xTab3)
    
    
    Dim Tablo3(1 To 3)                      'Pour écriture 3
    For F = 1 To 3
        Tablo3(F) = "xTab" & F
    Next F
End Sub

Quand j'exécute le code,
la partie Ecriture 1 donne la copie ci-dessous
1774341829722.png

La partie Ecriture 2 donne la copie ci-dessous
1774341890802.png

Pour la partie Ecriture 3, j'essaye de passer par une boucle mais cela ne donne pas le résultat souhaité (C'est normal car cela transforme en string mes données) mais je ne sais pas comment faire (voir copie ci-dessous)
1774342007788.png

Si toutefois quelqu'un trouve une solution, ce serait cool.

Cordialement
Lolote83
 
Solution
Re,
Une autre approche, changer la syntaxe des arrays. Il faut juste définir le nombre d'arrays à concaténer.
VB:
Sub TableauEmboités3()
Dim xTab(1 To 3)
    xTab(1) = Array("a", "b", "c", "d")
    xTab(2) = Array("e", "f", "g", "h")
    xTab(3) = Array(1, 2, 3, 4)
End Sub
1774359942067.png
Salut,
et avec des classes ?
Module de classe CColorItem :
VB:
Option Explicit

Private pID As Long
Private pNom As String
Private pR As Long
Private pG As Long
Private pB As Long

Public Property Get ID() As Long
    ID = pID
End Property
Public Property Let ID(ByVal v As Long)
    pID = v
End Property

Public Property Get Nom() As String
    Nom = pNom
End Property
Public Property Let Nom(ByVal v As String)
    pNom = v
End Property

Public Property Get R() As Long
    R = pR
End Property
Public Property Let R(ByVal v As Long)
    pR = v
End Property

Public Property Get G() As Long
    G = pG
End Property
Public Property Let G(ByVal v As Long)
    pG = v
End Property

Public Property Get B() As Long
    B = pB
End Property
Public Property Let B(ByVal v As Long)
    pB = v
End Property

Module de classe CColorList :
Code:
Option Explicit

Private Items As Collection

Private Sub Class_Initialize()
    Set Items = New Collection
End Sub

Public Sub Add(ID As Long, Nom As String, R As Long, G As Long, B As Long)
    Dim c As CColorItem
    Set c = New CColorItem
    
    c.ID = ID
    c.Nom = Nom
    c.R = R
    c.G = G
    c.B = B
    
    Items.Add c
End Sub

Public Property Get Count() As Long
    Count = Items.Count
End Property

Public Property Get Item(Index As Long) As CColorItem
    Set Item = Items(Index)
End Property

test :
Code:
Sub TestArray()
    Dim Liste As New CColorList, i As Long, c As CColorItem
    ' Ajout des couleurs
    With Liste
        .Add 1, "Rouge", 255, 55, 86
        .Add 2, "Orange", 232, 130, 93
        .Add 3, "Pêche", 255, 205, 143
        .Add 4, "Jaune", 253, 238, 101
        .Add 5, "Vert clair", 82, 206, 144
        .Add 7, "Vert citron", 182, 215, 103
        .Add 8, "Bleu", 92, 169, 229
        .Add 9, "Lavande", 177, 170, 235
        .Add 11, "Gris clair", 197, 206, 209
        .Add 13, "Gris chaud", 195, 197, 187
        .Add 18, "Marron", 188, 143, 111
        .Add 24, "Violet foncé", 165, 137, 203
    End With

    ' Exemple d'utilisation
    For i = 1 To Liste.Count
        Set c = Liste.Item(i)
        Debug.Print c.ID, c.Nom, c.R, c.G, c.B
    Next i
End Sub

Nullosse
 
- 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
15
Affichages
749
Réponses
5
Affichages
567
Réponses
4
Affichages
720
Retour