Re à tous
,
En fait si x est une
plage, alors la cellule x(1,1) est la première cellule de la plage x.
Cette notation prend comme base la première cellule de x et lui affecte les coordonnées (1,1)
Ensuite la plage n'intervient plus. On se réfère à cette première cellule.
x(4,7) est la cellule de ligne 4 depuis la ligne de x(1,1) (vers le bas) et de colonne 7 depuis la colonne de x(1,1) (vers la gauche)
On peut dépasser les limites de la plage. Par exemple x(999,999) est valable même si la plage est réduite à une cellule.
Par similarité x(1,0) désigne la cellule de ligne 1 par rapport à x(1,1) et de colonne une colonne à gauche de x(1,1).
x(0,0) est la cellule d'une ligne au-dessus de x(1,1) et d'une colonne à gauche par rapport à la colonne de x(1,1).
Imaginons l'instruction tablo = range("c3:f6")
On désigne les éléments de tablo par t(i,j). Le premier élément est le t(1,1).
C'est comme si la notation plage (i,j) "étendait" la notion d'indice i, j à un tableau de cellules prolongé vers la droite, vers la gauche, vers le haut, vers le bas à partir de t(1,1). les indices augmentent quand on se déplace vers le bas et vers la droite. Les indices diminuent quand on se déplace vers le haut et vers le bas.
On a en fait : x(i,j) correspond à
x(1, 1).Offset(i - 1, j - 1) ou plus simplement à
x.Cells(i, j).
Et x.Cells(0,0) ou x.Cells(-1,-4) est une écriture qui passe.
Un code peut vite devenir illisible si on emploie à outrance ce type peu intuitif de coordonnées.
C'est un peu à rapprocher de Range("b3:d4").Range("b3") qui désigne la cellule C5