Ah d'accord!
Dans ce cas on peut le faire de façon assez simple, quelque chose comme:
tableau = Range("B21:G30").Value
Le tableau aura directement lignes et colonnes de la plage donnée.
ça peut légèrement être amélioré en rendant la dernière ligne que l'on veut prendre dynamique en faisant:
Dim ligFin as Integer
ligFin = range("B" & Rows.Count).End(xlup).Row
tableau = Range("B21:G" & ligFin).Value
On va chercher la dernière ligne remplie en colonne B en partant de la dernière ligne du classeur colonne B (donc celle tout en bas du classeur) avec Rows.Count, on monte vers le haut, comme si on faisait le raccourci Ctrl + flèche vers le haut avec .End(xlup), ça s'arrête sur la première cellule remplie, et on demande à avoir la ligne avec .Row
On change ensuite un peu la définition de la plage de cellule pour rendre la ligne variable avec le symbole & qui sert à assembler la chaine de texte qui est constante avec la variable dont on vient de déterminer la valeur, et le tour est joué.
La particularité des tableaux définis de cette façon à partir d'une plage de cellules, c'est qu'ils ont toujours deux dimensions, et elles commencent à l'indice 1.
Les fonctions LBound(tableau,1) et Ubound(tableau,1) permettent d'avoir les limites inférieures et supérieures de ton tableau pour la première dimension (les lignes), c'est très pratique pour faire des boucles.