Bonsoir,
range(Cells(4 + n, 1), Cells(4 + n, 4)) fonctionne car ici nous sommes 100% sous VBA, donc il interprète le "n" comme la variable N qui vaut une certaine valeur, et le "+" comme une instruction de calcul, si on prend en exemple n= 3 , on a bien :
range(Cells(4 + 3, 1), Cells(4 + 3, 4))
range(Cells(7, 1), Cells(7, 4))
C'est une référence de plage "comprise" par VBA tout est OK
Lorsque vous faites : mon tableau comporte les valeurs "strings" suivantes :
Vclair = Array("Cells(4 + n, 1), Cells(4 + n, 4))
je m'arrête juste au premier index car le reste c'est pareil, et bien ici on n'est plus à 100% sous VBA car votre variable "n" est comprise dans la chaine alphanumérique de la valeur de votre tableau, et le "+" est considéré ici comme un caractère alphanumérique, en somme si n=3 vous aurez :
Vclair(0) = "Cells((4+n,1),Cells(4+n,4)"
du coup Range(Vclair(0)) sera égal à :
Range(Cells((4+n,1),Cells(4+n,4)) qui ressemble à ce que l'on a plus haut mais qui n'est pas égal du fait que n vaut n et le + n'est pas un plus, ce qui n'est pas une référence.
Le range qui fonctionne avec de l'alphanumérique est celui dont la valeur est de type "$B23" par exemple.
Enfin c'est mon résonnement...
du coup pour votre problème, votre tableau Vclair devrait être un tableau 100% numérique à 2 dimensions où la première serait la référence de la ligne et l'autre la colonne et que ces valeurs seraient utilisées avec un pas de deux. Ou bien alors un tableau à 4 dimensions et à ce moment là il n'y aurait pas ce pas de deux , un fichier explicatif :
@ bientôt
LouReeD