Bonjour,

 

Merci infiniment, c'est bien ce que je cherchais. En fait je me rends compte 
que le terme "sélection" était inapproprié, il me suffit d'avoir les adresses 
de début et fin de plage ce que je peux obtenir avec l'exemple donné et ainsi 
traiter le contenu des cellules contenues dans la plage renvoyée.

 

Quant au livre cité, personnellement je ne peux (et d'ailleurs par principe je 
ne veux pas non plus) me le payer. Et dans la société où je travaille, même si 
cela peut paraître absurde, le discours est "si on change pour une suite 
gratuite, c'est pas pour engager des frais" donc pas de formation et pas 
d'achat de documentation. J'ai accepté le defi de prouver que l'on pouvait 
passer de MS-office à OO sans que cela pénalise les utilisateurs. Donc je me 
débrouille comme je peux. Peut-être que je finirais par les convaincre qu'il me 
faut un minimum d'aide.

 

Encore merci. Sans l'aide la communauté je n'y arriverai pas. J'espère pouvoir 
rendre la pareille losque je serais plus avancée.

 

Claude
 
> Date: Wed, 14 Oct 2009 21:53:06 +0200
> From: marce...@club-internet.fr
> To: prog@fr.openoffice.org
> Subject: Re: [prog] Sélectionner plage
> 
> 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
> 
                                          
_________________________________________________________________
Nouveau! Découvrez le Windows phone Samsung Omnia II disponible chez SFR. 
http://clk.atdmt.com/FRM/go/175819072/direct/01/

Répondre à