[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.
Dans votre signature vous devez préciser la ou les versions exactes d'OpenOffice ou de LibreOffice et du ou des systèmes utilisés.
Exemple : AOO 4.1.6 (version imposée selon le cas) sous Win7 SP1, Win 8.1, Win 10, macOS 10.14.5, Ubuntu 18.10...
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5836
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
Dans votre signature vous devez préciser la ou les versions exactes d'OpenOffice ou de LibreOffice et du ou des systèmes utilisés.
Exemple : AOO 4.1.6 (version imposée selon le cas) sous Win7 SP1, Win 8.1, Win 10, macOS 10.14.5, Ubuntu 18.10...
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 5836
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é 18 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.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5618
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.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5618
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.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5618
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é 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 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 : Exalead [Bot], Google [Bot] et 4 invité(s)