Salut @Joco,
C'est parce que tu traites une array/tableau 2D comme une array 1D.
En utilisant l'explorateur de variables on voit que :
L'array "values" a 2 dimensions : Variant/Variant(1 to 28, 1 to 1). En fait c'est un "faux" tableau 2D car il n'a qu'une seule colonne.
Pour comprendre, quand tu récupères les données d'une Range, Excel renvoie toujours un tableau 2D, même si c'est une ligne/colonne unique. Alors quand il s'agit d'une ligne, utiliser Application.Transpose comme tu l'as fait permet effectivement de le transformer en tableau 1D. MAIS quand il s'agit d'une COLONNE (ce qui est ton cas), alors il faut transposer 2x. Soit :
Application.Transpose(Application.Transpose(rng.Value))
C'est la 1e solution.
La 2e c'est simplement d'ajouter la 2e dimension à tes coordonnées :
' Mélanger les valeurs
For j = UBound(values) To LBound(values) + 1 Step -1
Dim k As Long
k = Int((j - LBound(values) + 1) * Rnd + LBound(values))
temp = values(j, 1)
values(j, 1) = values(k, 1)
values(k, 1) = temp
Next j
Au choix !
Bonne journée