Bonsoir,
Tout à fait d'accord avec Jean-Marc.
Dans la programmation réelle (celle de l'API OpenOffice.org, pas l'enregistreur de macros) une sélection est en général invisible, elle est effectuée avec un curseur. En fait on ne s'intéresse pas à la sélection mais à la zone de cellules qui lui correspond.

Après quelques tâtonnements j'ai trouvé l'équivalent de ton Ctrl + * (qui sélectionne de manière visible un rectangle englobant toutes les cellules contigues à la zone ou cellule de référence). Tu vas voir que c'est totalement différent d'Excel.

Je suppose que la cellule de référence (ici : B6) est dans la première feuille du document Calc. Elle est entourée de quelques cellules non vides. Pour la démo, ma macro va afficher les coordonnées de la zone obtenue. En pratique on utiliserait ensuite l'objet zone de cellules.

Dim feuille As Object, celluleRef As Object, curseurCell As Object
feuille = ThisComponent.Sheets(0)
celluleRef = feuille.getCellRangeByName("B6")
curseurCell = feuille.createCursorByRange(celluleRef)
curseurCell.collapseToCurrentRegion
MsgBox(curseurCell.AbsoluteName)

Evidemment, pour comprendre comment ça marche il faut bien connaître l'API OOo. Si tu veux t'y plonger, lire le livre Programmation OpenOffice.org 3.
<http://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-3-9782212125221>

Je précise que tu n'y trouveras pas cet exemple, car la méthode collapseToCurrentRegion me semblait d'intérêt très limité (ainsi que les autres fournies par l'interface XSheetCellCursor).

   Bernard

Message de Delmas Jean-Marc  date 2009-10-14 07:10 :
La logique d'Excel/vba qui fonctionne à coup de :

Selection.CurrentRegion.Select
ActiveCell.Offset(n, p)

et autres facilités présentes dans MS Office n'a pas d'équivalent, instruction pour instruction. Il faut se rendre à cette évidence.

Si vous voulez absolument la logique d'Excel, il vous faut reprogrammer les fameuses facilités offertes par vba et les conserver précieusement.

Si cet effort vous semble hors de propos, il faut sans doute changer la structure même du programme pour l'adapter à ce que OOBasic et les API UNO savent faire. C'est plus long mais certainement plus efficace. J'irai même plus loin en disant qu'il se peut que vous ayez à changer la présentation des données présentes dans les feuilles, voire y introduire d'autres calculs.

Non la traduction vba/OOBasic n'est pas facile. Elle l'est d'autant moins que l'on a cédé à la tentation d'utiliser les instructions les plus spécifiques d'Excel. Une piste est d'étudier comment borner l'étendue de la sélection à partir d'une cellule de départ. Par exemple chercher les premières colonne et ligne vides.

Courage
Jean-Marc

Le mardi 13 Octobre 2009 21:12, prog_amat...@hotmail.fr a écrit :
bonsoir,



Désolée d'insister mais la solution proposée sélectionne toutes les
cellules contenant des données or le ctrl+* sélectionne les cellules
contenant des données contigues à une cellule de référence et ne
sélectionne pas les autres cellules remplies si elles ne sont pas contigues
à la cellule de référence



J'ai essayé plein d'exemples trouvés sur le net mais rien ne reproduit le
comportement du ctrl+*.



Quant à l'enregistreur, j'avoue que je ne comprends même pas comment
modifier les paramètres pour lui passer la cellule de référence



Je suis en train de ré-écrire sous OO des macros d'excel et donc si
quelqu'un connait le vba, je voudrais programmer sous oo l'instruction
suivante :



    Selection.CurrentRegion.Select




---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à