14 messages in org.openoffice.fr.progRe: [prog] Re: Insertion texte dans ...
FromSent OnAttachments
AlanJun 30, 2009 2:45 am 
Thibault VataireJun 30, 2009 3:47 am 
AlanJul 1, 2009 5:42 am 
Bernard MarcellyJul 2, 2009 2:18 am 
AlanJul 2, 2009 7:29 am 
Bernard MarcellyJul 2, 2009 2:18 pm 
AlanJul 3, 2009 12:29 am 
Thibault VataireJul 3, 2009 1:04 am.odt
AlanJul 6, 2009 12:26 am 
Thibault VataireJul 6, 2009 3:23 am 
AlanJul 6, 2009 6:29 am 
AlanJul 6, 2009 6:42 am 
AlanJul 7, 2009 3:26 am 
Thibault VataireJul 7, 2009 5:10 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Re: Insertion texte dans tableauActions...
From:Thibault Vataire (tvat@starxpert.fr)
Date:Jul 7, 2009 5:10:12 am
List:org.openoffice.fr.prog

Bonjour,

Le problème rencontré avec la fonction "ReplaceAll" et dû au fait que votre
curseur de navigation ne dispose pas de cette méthode : c'est le document qui
permet de faire appel à "ReplaceAll". Pour savoir si un object dispose d'une méthode ou non, vous pouvez utiliser
l'outils Xray.

Ci-dessous vous trouverez un exemple d'utilisation de l'API de recherche qui, je
pense, correspond à ce que vous souhaitiez effectuer.

Sub Main

dim doc as object dim rDesc as object dim elem as object

doc = thisComponent 'on parametre le descripteur de recherche rDesc = doc.createReplaceDescriptor rDesc.searchString = "@" 'on recherche le premier element elem = doc.findFirst(rDesc) 'si un element est trouvé do while (not isNull(elem)) 'et qu'il est dans une cellule if (not isEmpty(elem.cell)) then 'on remplace le texte par le numéro de ligne elem.string = getCellRow(elem.cell.cellName) end if 'puis on recherche l'element suivant elem = doc.findNext(elem, rDesc) loop

End Sub

'récupère le numéro de ligne à partir d'un nom de cellule function getCellRow(aCellName as string) as long

dim result as long dim st as object dim so as new "com.sun.star.util.SearchOptions" dim searchRes as object dim startOffset as long

st = createUnoService("com.sun.star.util.TextSearch") so.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP so.searchFlag = com.sun.star.util.SearchFlags.REG_NOSUB so.searchString = "[:digit:]{1,}$" st.setOptions(so) searchRes = st.searchForward(aCellName, 0, 0) if (searchRes.subRegExpressions = 1) then startOffset = searchRes.startOffset(0) result = cInt(mid(aCellName, startOffset + 1, (searchRes.endOffset(0) -
startOffset + 1))) end if

getCellRow = result

end function

Cordialement,

T. Vataire

----- Mail Original ----- De: "Alan" <alan@antsys.fr> À: pr@fr.openoffice.org Envoyé: Mardi 7 Juillet 2009 12h26:46 GMT +02:00 Harare / Pretoria Objet: [prog] Re: Insertion texte dans tableau

Et voilà j'ai ma solution. Pour résoudre le problème, je simule la fonction chercher/remplacer. Je sélectionne au préalable la ligne de mon tableau.

Dim CellDest As Object

dim args1(18) as new com.sun.star.beans.PropertyValue args1(0).Name = "SearchItem.StyleFamily" args1(0).Value = 2 args1(1).Name = "SearchItem.CellType" args1(1).Value = 0 args1(2).Name = "SearchItem.RowDirection" args1(2).Value = true args1(3).Name = "SearchItem.AllTables" args1(3).Value = false args1(4).Name = "SearchItem.Backward" args1(4).Value = false args1(5).Name = "SearchItem.Pattern" args1(5).Value = false args1(6).Name = "SearchItem.Content" args1(6).Value = false args1(7).Name = "SearchItem.AsianOptions" args1(7).Value = false args1(8).Name = "SearchItem.AlgorithmType" args1(8).Value = 0 args1(9).Name = "SearchItem.SearchFlags" args1(9).Value = 71680 args1(10).Name = "SearchItem.SearchString" args1(10).Value = "(@)" args1(12).Name = "SearchItem.Locale" args1(12).Value = 255 args1(13).Name = "SearchItem.ChangedChars" args1(13).Value = 2 args1(14).Name = "SearchItem.DeletedChars" args1(14).Value = 2 args1(15).Name = "SearchItem.InsertedChars" args1(15).Value = 2 args1(16).Name = "SearchItem.TransliterateFlags" args1(16).Value = 1280 args1(17).Name = "SearchItem.Command" args1(17).Value = 3 args1(18).Name = "Quiet" args1(18).Value = true

For index_row = 1 to nb_rows - 1

args1(11).Name = "SearchItem.ReplaceString" args1(11).Value = "(" & index_row - 1 & ")" CellDest = Table.getCellRangeByPosition(0, index_row, nb_col - 1, index_row) Doc.CurrentController.Select(CellDest) dispatcher.executeDispatch(Frame, ".uno:Paste", "", 0, Array()) CellDest = Table.getCellRangeByPosition(0, index_row, nb_col - 1, index_row) Doc.CurrentController.Select(CellDest) dispatcher.executeDispatch(Frame, ".uno:ExecuteSearch", "", 0, args1())

Next

Un grand merci à tous ceux qui ont pris du temps pour lire. Et en espérant que ceci aidera quelqu'un d'autre.