[Résolu][Writer] Convertir un champ en texte

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

[Résolu][Writer] Convertir un champ en texte

Message par daru72 »

Bonjour,

Je cherche à convertir les champs d'un document Writer en texte

J'ai essayé le code proposé sur ce post

Code : Tout sélectionner

sub remplacerchamps
    enum_ = thiscomponent.TextFields.createEnumeration()
    do while enum_.hasMoreElements()
        n = enum_.nextElement()
        n.Anchor.setString(n.Content)
     loop
     print "Terminé"
end sub 
Mais j'obtiens Erreur d'exécution BASIC.
Propriété ou méthode non trouvée : Content.

J'imagine que la propriété a changé ?

Vous remerciant pour votre aide.
Dernière modification par daru72 le 14 mai 2018 14:57, modifié 2 fois.
LibreOffice Version: 5.2.3.3 sous Windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Message par luky-luke »

Bonjour
daru72 a écrit :Je cherche à convertir les champs d'un document Writer en texte
Quel type de champ ?
Si pour faire suite à ton sujet précédent Insérer une liste de saisie, j'imagine que c'est une liste de saisie (Merci Mme Irma)
Il faudra donc récupérer l'item sélectionné

Code : Tout sélectionner

n.Anchor.setString(n.SelectedItem)
daru72 a écrit :J'imagine que la propriété a changé ?
Pour retrouver les propriétés d'un objet, utilisez Xray (suivre le lien dans ma signature).
Cordialement
Luke
Dernière modification par luky-luke le 05 avr. 2018 12:01, modifié 2 fois.
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9254
Inscription : 28 août 2010 08:45

Re: [Writer] Convertir un champ en texte

Message par micmac »

Bonjour,
votre signature a écrit : OpenOffice 3.3.0 sous Windows 7
Votre signature indique une version de OpenOffice qui n'est plus maintenue.
Est-ce une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version sans oublier de purger le profil de la version 3.

Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

Merci Micmac, signature corrigée, effectivement je n'étais pas venu ici depuis quelques temps.

Merci Luke pour ton élément de réponse.

J'obtiens toujours Erreur d'exécution BASIC.
Propriété ou méthode non trouvée : SelectedItem.

En fait, il me faudrait transformer dans l'absolu tous les champs en texte.
LibreOffice Version: 5.2.3.3 sous Windows 7
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9254
Inscription : 28 août 2010 08:45

Re: [Writer] Convertir un champ en texte

Message par micmac »

daru72 a écrit :signature corrigée
Pas complètement. Il manque la version exacte du système d'exploitation.

Merci
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Message par luky-luke »

Bonjour
daru72 a écrit :En fait, il me faudrait transformer dans l'absolu tous les champs en texte.
Encore un fois quelle type de champ ? :mrgreen:
Comment espère tu avoir une réponse correct en nous donnant aussi peu d'élément. Un fichier peut-être :idea:

Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

Voici, os ajouté dans ma signature.

Luke, j'ai des champs Texte et Liste de saisie

J'ai essayé ceci

Code : Tout sélectionner

    Dim LesChamps as Object, oChamp as Object
    LesChamps = ThisComponent.TextFields.createEnumeration
    Do While LesChamps.hasMoreElements()
       oChamp = LesChamps.nextElement()
    oChamp.Anchor.setString(oChamp.getPresentation(False))
    Loop

Sur le principe, cela fonctionne.
Les champs sont bien transformés.

En revanche, cela génère quand même une erreur :

Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.uno.RuntimeException
Message: .
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

C'est un document professionnel, mais voici un fichier d'exemple qui devrait faire l'affaire. Merci encore :super:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version: 5.2.3.3 sous Windows 7
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Message par Piaf »

Bonjour
A tester

Code : Tout sélectionner

Sub Main
Dim LesChamps as Object, oChamp as Object
	LesChamps = ThisComponent.TextFields.createEnumeration
	Do While LesChamps.hasMoreElements()
		oChamp = LesChamps.nextElement()
		oChamp.Anchor.setString(oChamp.Anchor.String)
	Loop
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

Merci Piaf

J'obtiens Variable d'objet non définie sur

Code : Tout sélectionner

oChamp.Anchor.setString(oChamp.Anchor.String)
:fou:
LibreOffice Version: 5.2.3.3 sous Windows 7
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Message par Piaf »

Re
daru72 a écrit : J'obtiens Variable d'objet non définie sur
Dans le fichier que tu as mis en ligne ou dans ton document de travail ?
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

Argh ... dans mon document !
Du coup çà pourrait venir de quoi ?
LibreOffice Version: 5.2.3.3 sous Windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Message par luky-luke »

Re
daru72 a écrit :Variable d'objet non définie

Code : Tout sélectionner

Dim oChamp as Object
Ou d'un champ absent de ton fichier test
A+
 Ajout : Encore grillé :lol: 
Dernière modification par luky-luke le 05 avr. 2018 13:23, modifié 2 fois.
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Message par Piaf »

Re
daru72 a écrit :Du coup çà pourrait venir de quoi ?
A priori d'un type de champ qui n'est pas dans ton fichier test.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
daru72
NOOuvel adepte
NOOuvel adepte
Messages : 22
Inscription : 06 oct. 2012 07:33

Re: [Writer] Convertir un champ en texte

Message par daru72 »

Après recherches, le problème venait de la présence de commentaires dans le document. :fou:
Du coup j'ai supprimé les commentaires par macro n'arrivant pas à me débarrasser de l'erreur...

En revanche, j'ai un autre souci avec les numéros de pages.
Mon document a des entetes (première page et pages suivantes)

Lorsque les champs numéro de page sont convertis en texte, du coup le dernier champ converti s'applique à tous les pages autres que celles de première page. Et du coup la numérotation n'est pas bonne.

Y a t'il possibilité d'éviter cela, genre éviter que la macro ne prenne en compte les champs des entêtes ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version: 5.2.3.3 sous Windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Message par luky-luke »

Bonjour
A tester

Code : Tout sélectionner

Sub Main
Dim LesChamps as Object, oChamp as Object
LesChamps = ThisComponent.TextFields.createEnumeration
	Do While LesChamps.hasMoreElements()
		oChamp = LesChamps.nextElement()
		If not oChamp.SupportsService("com.sun.star.text.TextField.PageNumber") Then
			If not oChamp.SupportsService("com.sun.star.text.TextField.PageCount")  Then
				oChamp.Anchor.setString(oChamp.Anchor.String)
			End if
		End if     
	Loop
End Sub
Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose