Bonjour à toutes et à tous,

Lorsque je manipule les variables tableaux je m'appuie beaucoup sur l'excellente note explicative faite par SilkyRoad sur le sujet.
https://silkyroad.developpez.com/vba/tableaux/

Ci-dessous, 2 extraits de cette note qui permettront d'illustrer mon problème :

  1. Pour vous affranchir des particularités d'Option Base, vous pouvez aussi utiliser la clause To, afin de contrôler la plage des indices d'un tableau.
  2. La limite inférieure d'une dimension peut être:


  • 0 ou 1, en fonction de la valeur de l'instruction Option Base (Consultez le chapitre Option Base pour plus de détails).
  • N'importe quelle valeur pour les dimensions définies à l'aide de la clause To.


Je travaille en Option base 1.

J'ai défini une variable tableau "Tab_chro" à 2 dimensions par la méthode suivante :
ReDim Tab_chro(7 To 220, 2 To 7)

Puis je l'alimente par un range de taille identique.
Tab_chro = Range(Cells(7, 2), Cells(220, 7)).Value


En exécutant mon code en mode pas à pas au passage de ces deux lignes, je constate que juste après la ligne "Redim", ma variable tableau "Tab_chro" (vide) a bien les indices min et max suivants:
  • Dimension 1 : 7 --> 220
  • Dimension 2 : 2 --> 7


Par contre, l'affectation des valeurs du range vers mon tableau abaisse les indices min et max :
  • Dimension 1 : 1 --> 214
  • Dimension 2 : 1 --> 6


J'ai fait le test en basculant en mode Option Base 0 et j'obtiens exactement la même chose, avec les mêmes indices que précédemment.

Plus bas dans mon code, si par exemple j'appelle la valeur de Tab_chro(218,7), ça plante car les limites des indices ont été abaissés (à mon insu) par l'affectation des valeurs du range et donc ces indices n'existent plus...

Est-ce que quelqu'un comprend pourquoi VBA fait ça (quelle subtilité m'a échappée) ?

Je vous remercie d'avance pour vos explications.