Bernard Marcelly a écrit :

Voici l'équivalent : utiliser le curseur de cellule, de l'interface com/sun/star/table/XCellCursor.

dim laFeuille as object, cellCour as object, curseurCell as object
' point de départ
laFeuille = thisComponent.Sheets(0)
cellCour = laFeuille.getCellRangeByName("D5")
curseurCell = laFeuille.createCursorByRange(cellCour)
' maintenant on déplace le curseur de cellule
curseurCell.goToOffset(1,1)
cellCour = curseurCell.getCellByPosition(0,0)
print cellCour.Value
curseurCell.goToOffset(-2,0)
cellCour = curseurCell.getCellByPosition(0,0)
print cellCour.Value

Alors, quelle est la solution la plus élégante?


Bonjour, en simplifiant le code et le essayant de le faire ressembler à mon code, on peut obtenir : oCell.spreadSheet.createCursorByRange( oCell ).goToOffset( 1, 1 ).getCellByPosition( 0, 0 )

mais ce n'est pas vraiment plus simple on fait intervenir un curseur et 2x oCell contre juste 3x oCell et dans chaque cas la feuille spreadSheet de la cellule. N'ayant pas l'habitude d'utiliser les curseurs je vais garder la première version. C'est quand même dommage, parce qu'en VBA, c'est plus simple sur le coup, il suffit de faire oCell.Offset[ 1, 1 ].

Question subsidiaire, pour faire un équivalent de Resize, c'est le même problème, il faudrait passer par des curseurs ou faire qqch du style : oCell.Spreadsheet.getCellRangeByPosition( oCell.CellAddress.Column + 1, oCell.CellAddress.Row + 1, oCell.CellAddress.Column + 2, oCell.CellAddress.Row + 2 ) ce code pour récupérer le carré de 4 cellules en bas à droite de la cellule oCell ?

Je présume vu la réponse pour Offset que cette solution doit être la meilleure, mais on ne sait jamais.

Cordialement, pac.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à