Limiter une zone avec une variable
Bonjour,
J'ai besoin de définir une zone (pour copie de données par exemple) :
Je sais le faire en indiquant les lignes de début et fin
mais si la ligne de début est constante, celle de fin est variable
je sais trouver le nombre de lignes avec NBVAL
mais je ne réussis pas à introduire cette variable dans ma formule de définition de la zone
j'ai toujours "erreur" !
Exemple : spreadsheet.getRange('3:2000').activate();
Je voudrais remplacer ce 2000 par une variable
Merci de votre attention
Pour GoogleSheeters, mais pas que.
Bjr InFM,
Voyez donc la fonction Offset qui va vous servir souvent.
Range.Offset (Décalage lignes, Décalage colonnes, Nb de lignes, Nb de colonnes)
Avec des paramètres définis ainsi : Offset (p1, p2 + optionnels : , p3, p4)
Offset retourne une plage de p3 lignes x p4 colonnes,
"décalée" de p1 lignes et p3 colonnes, à partir de la 1° cellule de Range
Si p3 ou p4, sont omis, ce sont les dimensions de la plage source qui sont reprises.
Dans votre cas, les décalages sont inutiles, mais vous pouvez utiliser les dimensions de la plage
Comme vous avez la particularité de vouloir sélectionner les lignes entières, ne spécifiez pas le p4,.
Ca donne comme ceci :
var nbLignes = jeCompteMesLignesIci();
spreadsheet.getRange('3:3').offset(0, 0, nbLignes, ).activate();
Rmq 1 : La virgule après nbLignes n'est pas indispensable, mais elle nous rappelle qu'il existe un p4 et qu'il est vide
(conseil pour la maintenabilité, mais c'est vous qui voyez)
Rmq 2 : Est-il utile de sélectionner les lignes entières ?
Maintenant que vous savez faire une sélection dynamique, ce serait plus perf de ne sélectionner que les colonnes utiles,
Rmq 3 : Vous faites un activate(), pour "sélectionner", càd positionner le curseur sur cette plage.
Or, dans 80% des cas, on peut faire les opérations voulues sans cette sélection,
simplement en travaillant sur des variables range, sans impacter l'affichage.
Et c'est 10x plus rapide? Pensez-y.
Bonne mise en oeuvre
EXM
Bonjour
Merci Exacel pour cette proposition très détaillée.
Je vais étudier cette fonction Offset
Bien d'accord, pas besoin des lignes entières.
J'essaie cela dès que possible
et je reviens
A +
INFM