Hello,
Voici comment dans un document Writer utiliser des champs utilisateurs qui sont mis à jour par une macro sur un événement.
il faut tout d'abord insérer le champ utlisateur dans le document.
1 - Dans le document, positionner le curseur à l'endroit où l'on veut insérer le champ.
2 - Menu
Insertion/Champ/Autres Champs
3 - Dans la fenêtre qui s'ouvre choisir l'onglet
Variables et comme type
Champ d'utilisateur , Définir son nom et sa valeur par défaut .
4 - Cliquer sur le bouton
Insérer
ChampUtil1.png
Exemples utilisés dans la macro :
champ
nbObjDessin qui compte le nombre d'objets Dessin dans le document Valeur 0 par défaut
champ
partieFichier qui extrait la chaîne qui se trouve entre crochets dans le nom du fichier) Valeur Vide
nbObjDessin
0
partieFichier
Vide
Voici les macros qui met à jour les deux champs.
Code : Tout sélectionner
Sub MiseAjourChamps()
Dim sFichier As String , startCar As Integer, endCar As Integer
Dim oTextField As Object, oTextfields As Object, oTextfieldsEnumeration As Object
oTextfields = thiscomponent.Textfields
oTextfieldsEnumeration = oTextfields.createEnumeration
While oTextfieldsEnumeration.hasmoreelements
oTextfield = oTextfieldsEnumeration.nextelement
if oTextfield.supportsservice("com.sun.star.text.TextField.User") then
if oTextfield.TextFieldMaster.Name = "nbObjDessin" then
oTextField.TextFieldMaster.Value = nbObjDessin()
end if
if oTextfield.TextFieldMaster.Name = "partieFichier" then
sFichier = ConvertFromUrl(thiscomponent.getURL())
startCar = InStr(sFichier,"[")
endCar = InStr(sFichier,"]")
oTextField.TextFieldMaster.Content = Mid(sFichier,startCar + 1,endCar - startCar -1)
end if
end if
wend
oTextFields.refresh
end sub
Function nbObjDessin() As Integer
Dim Doc As Object, Page As Object, oShape As Object, i As Integer
Doc = ThisComponent
Page = Doc.DrawPages(0)
for i = 0 to Page.count - 1
oShape = Page(i)
if oShape.ImplementationName = "SwXShape" then
nbObjDessin = nbObjDessin + 1
end if
next i
End Function
A noter que la partie
nbObjDessin c'est pour répondre à
cette discussion
Pour "câbler" par exemple la macro
MiseAjourChamps sur l'ouverture du document:
1 - Menu
Outils/Personnaliser Onglet
Evénements
2 - Choisir
Activer le document et Assigner la macro
MiseAjourChamps
ChampUtil2.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.