Afficher toutes les valeurs d'une array dynamique

Bonjour,

Je viens vous présenter mon sujet,

J'aimerai à l'aide d'un msg box afficher les valeurs de mon array dynamique à la suite

Mon code en PJ bug, je ne comprend pas mon erreur.

Je reste disponible pour les questions,

Merci de votre aide,

33test.xlsm (21.12 Ko)

Bonjour Louyotj, bonjour le forum,

Une variable "tableau dynamique" est toujours à deux entrées : Nombre de Lignes / Nombre de Colonnes !... Représentant la plage des cellules.

Essaie comme ça :

Sub Mapping_Produits()
Dim DC As Integer 'déclare la variable DC (dernière Colonne)
Dim vArray As Variant 'déclare la variable vArray
Dim I As Integer 'déclare la variable I (Incrément)
Dim msgString As String 'déclare la variable msgString

With Sheets("Initial") 'prend en compte l'onglet initial
    DC = .Cells(1, Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée de la ligne 1
    vArray = .Range(.Cells(1, 2), .Cells(1, DC)) 'définit le tableau vArray (une ligne Ubound(vArray, 1)=1 / 4 colonnes Ubound(vArray, 2)=4)
End With 'fin de la prise en compte de l'onglet "Initial"
For I = 1 To UBound(vArray, 2) 'boucle sur les 4 colonnes du tableau vArray
    msgString = msgString & vArray(1, I) & vbCr 'définit la variable msgString
Next I 'prochaine colonne de la boucle
MsgBox msgString 'affiche msgString
End Sub

Bonsoir,

Hum... Pas terrible !

Utilise :

Sub Mapping_Produits()
Dim vArray As Variant
Dim i As Long
Dim msgString As String

With Sheets("Initial")
k = .Range("A1").End(xlToRight).Column
vArray = .Range(.Cells(1, 1), .Cells(1, k)).Value
End With
For i = 1 To k
    msgString = msgString & vArray(1, i) & vbCr
Next i
MsgBox (msgString)
End Sub

Sinon l'idéal pour définir une plage dynamique c'est de la définir dans le Gestionnaire de nom :

Produits Fait référence à :

=DECALER(Initial!$A$1;;;;NBVAL(Initial!$1:$1))

Ensuite dans VBA :

Sub Mapping_Produits()
Dim a, i%, msg$
a = Range("Produits").Value
For i = 1 To Range("Produits").Count
    msg = msg & a(1, i) & vbCr
Next i
MsgBox (msg)
End Sub

A+

Merci de vos 3 réponses et de vos célérités respectives

Bonjour à tous,

Là j'arrive trop tard !

Je mets quand même ma solution : juste une variante par rapport à Galopin pour contourner la question des indices de tableaux affectés de cette façon (boucle sur le tableau)...

Sub Mapping_Produits()
    Dim vArray, i, k%, msgString$
    With Sheets("Initial")
        k = .Range("A1").End(xlToRight).Column
        vArray = .Range("A1").Resize(, k).Value
    End With
    For Each i In vArray
        msgString = msgString & i & Chr(10)
    Next i
    MsgBox msgString
End Sub

Cordialement.

Rechercher des sujets similaires à "afficher toutes valeurs array dynamique"