[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 !

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

Messagepar daru72 » 05 Avr 2018 12:26

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   AgrandirRéduire
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 édition par daru72 le 14 Mai 2018 15:57, édité 2 fois.
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar luky-luke » 05 Avr 2018 12:56

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   AgrandirRéduire
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 édition par luky-luke le 05 Avr 2018 13:01, édité 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
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 873
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Messagepar micmac » 05 Avr 2018 12:57

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.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5155
Inscrit le : 28 Août 2010 09:45

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 05 Avr 2018 13:09

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
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar micmac » 05 Avr 2018 13:12

daru72 a écrit:signature corrigée

Pas complètement. Il manque la version exacte du système d'exploitation.

Merci
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5155
Inscrit le : 28 Août 2010 09:45

Re: [Writer] Convertir un champ en texte

Messagepar luky-luke » 05 Avr 2018 13:23

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
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 873
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 05 Avr 2018 13:26

Voici, os ajouté dans ma signature.

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

J'ai essayé ceci

Code : Tout sélectionner   AgrandirRéduire
    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
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 05 Avr 2018 13:29

C'est un document professionnel, mais voici un fichier d'exemple qui devrait faire l'affaire. Merci encore :super:
Pièces jointes
test.odt
(9.21 Kio) Téléchargé 13 fois
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar Piaf » 05 Avr 2018 13:42

Bonjour
A tester
Code : Tout sélectionner   AgrandirRéduire
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.0.6 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5390
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 05 Avr 2018 13:59

Merci Piaf

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

Code : Tout sélectionner   AgrandirRéduire
oChamp.Anchor.setString(oChamp.Anchor.String)


:fou:
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar Piaf » 05 Avr 2018 14:06

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.0.6 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5390
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 05 Avr 2018 14:11

Argh ... dans mon document !
Du coup çà pourrait venir de quoi ?
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar luky-luke » 05 Avr 2018 14:21

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

Code : Tout sélectionner   AgrandirRéduire
Dim oChamp as Object

Ou d'un champ absent de ton fichier test
A+
 Ajout : Encore grillé :lol: 
Dernière édition par luky-luke le 05 Avr 2018 14:23, édité 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
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 873
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

Re: [Writer] Convertir un champ en texte

Messagepar Piaf » 05 Avr 2018 14:21

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.0.6 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5390
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Writer] Convertir un champ en texte

Messagepar daru72 » 30 Avr 2018 10:49

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 ?
Pièces jointes
test2.odt
(11.57 Kio) Téléchargé 9 fois
LibreOffice Version: 5.2.3.3 sous Windows 7
daru72
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 22
Inscrit le : 06 Oct 2012 08:33

Re: [Writer] Convertir un champ en texte

Messagepar luky-luke » 30 Avr 2018 13:19

Bonjour
A tester
Code : Tout sélectionner   AgrandirRéduire
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
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 873
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)