

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
7 messages in org.openoffice.fr.progRe: [prog] copie tableau| From | Sent On | Attachments |
|---|---|---|
| abel | Jul 10, 2008 10:08 am | |
| Francois Gatto | Jul 10, 2008 11:28 am | |
| abel | Jul 11, 2008 3:37 am | |
| Bernard Marcelly | Jul 11, 2008 5:10 am | |
| Jean-Francois Nifenecker | Jul 11, 2008 5:21 am | |
| abel | Jul 11, 2008 6:38 am | |
| Bernard Marcelly | Jul 12, 2008 5:24 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] copie tableau | Actions... |
|---|---|---|
| From: | abel (abel...@ac-poitiers.fr) | |
| Date: | Jul 11, 2008 3:37:47 am | |
| List: | org.openoffice.fr.prog | |
François Gatto a écrit :
abel a écrit :
Bonjour, Je m'essaie à la programmation avec Oo2, je voudrais aller à la fin du document, sauter une ligne et recopier un tableau qui existe déjà. Tout va bien pour aller en fin de document et sauter une ligne mais pour recopier le tableau j'ai une erreur que je ne comprends pas .
Voici le message d'erreur Runtime error BASIC. Une exception s'est produite : Type : com.star.uno.RuntimeException Message : SwXTextTable: already attached to range ..
Voici le texte de la macro :
REM ***** BASIC ***** Option Explicit
sub new_cadre() dim mondocument as object dim monTexte As Object dim curseurVisible as Object dim monCurseur as object dim saut as Integer dim maTable as Object rem ------------------------- monDocument = ThisComponent monTexte = monDocument.Text curseurVisible = monDocument.CurrentController.ViewCursor saut = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK monCurseur = monTexte.createTextCursor rem ------------------------- curseurVisible.jumpToLastPage curseurVisible.jumpToEndOfPage monTexte.insertControlCharacter(curseurVisible, saut, false) maTable = monDocument.createInstance("com.sun.star.text.TextTable") maTable = monDocument.TextTables.getByName("rencontre") monTexte.insertTextContent(curseurVisible, maTable, false) end sub
c'est sur l'avant dernière ligne que l'erreur se produit, le tableau existe bien dans le document et le nom est bon.
Si vous avez une idée je suis preneur. Merci d'avance.
Abel
Il manque plusieurs éléments et sur le principe : il convient de sélectionner la table à dupliquer, puis de la copier pour la coller ailleurs.
Voici ton code remanié. J'espère être suffisamment clair.
Option Explicit
sub new_cadre() ' heu, le nom de la procédure peut être équivoque ! dim mondocument as object dim monTexte As Object dim curseurVisible as Object dim monCurseur as object dim saut as Integer dim maTable as Object, oTableRange as object dim numRows as integer, numCols as integer dim oDispatcher as object, oSourceFrame as object dim Arguments() rem ------------------------- monDocument = ThisComponent monTexte = monDocument.Text curseurVisible = monDocument.CurrentController.ViewCursor saut = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK monCurseur = monTexte.createTextCursor rem ------------------------- curseurVisible.jumpToLastPage curseurVisible.jumpToEndOfPage monTexte.insertControlCharacter(curseurVisible, saut, false)
' on sélectionne la table maTable = ThisComponent.TextTables.getByName("rencontre") numRows = maTable.rows.count ' on récupère le nombre de lignes, numCols = maTable.columns.count ' et le nombre de colonnes oTableRange = maTable.getCellRangeByPosition(0,0,numCols-1, numRows-1) ThisComponent.CurrentController.select(oTableRange)
' on copie la table sélectionnée oSourceFrame = ThisComponent.CurrentController.Frame oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") oDispatcher.executeDispatch(oSourceFrame, ".uno:Copy", "", 0, Arguments())
' on se positionne dans le texte curseurVisible = monDocument.CurrentController.ViewCursor saut = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK monCurseur = monTexte.createTextCursor rem ------------------------- curseurVisible.jumpToLastPage curseurVisible.jumpToEndOfPage monTexte.insertControlCharacter(curseurVisible, saut, false)
' on recopie enfin la table oDispatcher.executeDispatch(oSourceFrame, ".uno:Paste", "", 0, Arguments())
end sub
NB : attention à la recopie du code selon les clients de messagerie. Chaque ligne est individuelle, *sans* retour à la ligne.
François Gatto
Super, ça marche, un grand merci.
Où pourrais-je obtenir de la documentation sur l'écriture des macros ? J'ai le livre de Laurent Godard, mais je n'ai pas trouvé dedans le fait de récupérer les le nbre de lignes et de colonnes ...
Merci
Abel







