Que fait réellement la propriété range.Rows d'Excel ?

Bon, je termine un projet d’extension pour une application Excel-VBA existante, et je me retrouve une fois de plus face au mystère des propriétés range.Rows (?) et worksheet.Rows.

Quelqu’un sait-il ce que ces propriétés font réellement et ce qu’elles sont censées nous fournir ? (Note : tout ceci s’applique probablement aussi aux propriétés *.Columns correspondantes).

Ce que j’aimerais vraiment pouvoir en faire, c’est retourner une plage de lignes, comme ceci :

   SET rng = wks.Rows(iStartRow, iEndRow)

Mais je n’ai jamais réussi à le faire fonctionner, même si l’IntelliSense montre deux arguments pour cela. À la place, je dois utiliser l’une des deux ou trois autres techniques (assez bricolées).

L’aide est très peu utile (typiquement pour le VBA Office), et chercher “Rows” sur Google n’est pas très utile non plus, peu importe combien d’autres termes j’ajoute.

Les seules choses pour lesquelles j’ai pu l’utiliser sont 1) retourner une seule ligne en tant que plage (rng.Rows(i)) et 2) retourner le nombre de lignes dans une plage (rng.Rows.Count). C’est tout ? Il n’y a vraiment rien d’autre que cela puisse faire ?

Clarification : Je sais que cela retourne une plage et qu’il existe d’autres façons d’obtenir une plage de lignes. Ce que je demande spécifiquement, c’est qu’est-ce que .Rows() nous donne que nous n’avons pas déjà avec .Cells() et .Range() ? Les deux choses que je connais sont 1) un moyen plus simple de retourner une plage d’une seule ligne et 2) un moyen de compter le nombre de lignes dans une plage.

Y a-t-il autre chose ?

Range.Rows et Range.Columns retournent essentiellement la même plage sauf que la nouvelle plage a un indicateur qui signale qu’elle représente des lignes ou des colonnes. Ceci est nécessaire pour certaines propriétés Excel telles que Range.Count et Range.Hidden et pour certaines méthodes telles que Range.AutoFit() :

  • Range.Rows.Count retourne le nombre de lignes dans la plage.

  • Range.Columns.Count retourne le nombre de colonnes dans la plage.

  • Range.Rows.AutoFit() ajuste automatiquement les lignes dans la plage.

  • Range.Columns.AutoFit() ajuste automatiquement les colonnes dans la plage.

Vous pourriez trouver que Range.EntireRow et Range.EntireColumn sont utiles, bien qu’ils ne soient toujours pas exactement ce que vous cherchez. Ils retournent toutes les colonnes possibles pour EntireRow et toutes les lignes possibles pour EntireColumn pour la plage représentée.

Je sais cela parce que SpreadsheetGear for .NET est livré avec des API .NET qui sont très similaires aux API d’Excel. L’API de SpreadsheetGear est fournie avec plusieurs surcharges fortement typées pour l’indexeur IRange, y compris celui que vous souhaiteriez probablement qu’Excel ait :

  • IRange this[int row1, int column1, int row2, int column2];

Avertissement : je suis le propriétaire de SpreadsheetGear LLC.