Bonjour.
Voilà mon problème : à l'aide d'une macro, je dois créer un tableau qui contient des champs user-defined dans un document de type writer.
En ce qui concerne la création du tableau, je dirais que je n'ai presque pas de problème (un petit soucis pour récupérer un tableau déjà existant, mais c'est secondaire )
Là où j'ai vraiment un problème, c'est pour remplir le contenu d'une cellule avec un élément user-defined.
Tant qu'il s'agit d'insérer du texte dans la cellule, le modifier, pas de problème, j'utilise pour ça le code suivant :
Mais impossible d'insérer un champs user-defined.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ' index : numéro de la colonne ' tab_suivi : référence vers le tableau que j'ai construit sub setColValue(index as integer, libelle as string, value as string) dim cell as object ' on récupère la référence vers la cellule cell = tab_suivi.getCellByPosition(index,0) ' version insertion de texte, qui fonctionne nickel cell.string = "#value#" ' mais ça ne convient pas :/ ' comment faire pour insérer un champs user-defined ' ayant l'atttribut name à "libelle" ' et la valeur à "value" dans la cellule cell ? insert_controled_field(libelle,value) 'ne fonctionne pas !! cf code macro plus bas... end sub
Je cherche a obtenir ça dans le XML du fichier content.xml de mon document final :
Auparavant, j'utilisais une macro pour insérer ces types de champs dans mon document. Un clic sur un bouton d'une boite de dialogue insérait le champs à l'emplacement du curseur visible dans le document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <table:table-cell table:style-name="table_2_.A1" office:value-type="string"> <text:p text:style-name="Table_20_Heading"> <text:user-field-get text:name="libelle">#value#</text:user-field-get> </text:p> </table:table-cell>
Voici le code de cette macro, qui n'est pas de moi :
Il semblerait que cette macro se base sur le curseur visible du document, et insère le champs user-defined. Du coup, ça ne fonctionne pas pour insérer dans ma cellule cell du premier script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 sub insert_controled_field(nom as string,value as string) dim document as object dim dispatcher as object dim args2(5) as new com.sun.star.beans.PropertyValue args2(0).Name = "Type" args2(0).Value = 20 args2(1).Name = "SubType" args2(1).Value = 1 args2(2).Name = "Name" args2(2).Value = nom args2(3).Name = "Content" args2(3).Value = value args2(4).Name = "Format" args2(4).Value = -1 args2(5).Name = "Separator" args2(5).Value = " " document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args2()) end sub
et je ne sais pas comment déplacer le curseur dans ma cellule.
Je ne sais pas si mon approche est la bonne, mais toute aide, suggestion seront les bienvenues.
Merci d'avance à ceux qui pourront m'aider.
Partager