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