MAcro

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email: - sautriquet@yahoo.fr
Sujet: - MAcro
Question: - Bonjour,
Je voudrai créer une macro permettant de cacher tel ou tel type de paragraphe de façon automatique : avant l'enregistrement je n'arrive que dans la fenêtre avec les options, mais cela ne va pas jusqu'à cocher "masquer"
Merci pour votre aide.
F. SAUTON

Bonjour

Je voudrai créer une macro permettant de cacher tel ou tel type de paragraphe de façon automatique

Il n'est pas forcément nécessaire de passer par une macro pour cela. Tu peux
insérer les parties de texte à masquer dans des sections (menu Insertion).
Les sections peuvent être masquées sous condition et la condition peut
être le test d'une variable.

Voir cette page sur l'insertion de variables:
https://wiki.documentfoundation.org/FR/FAQ/Writer/045

Sinon, tu peux fonder une solution par macro sur l'utilisation de
styles de paragraphes. Appliquer un style de paragraphe particulier
au texte à masquer. Puis utiliser une macro pour modifier l'attribut
"masqué" du texte. Par exemple :

sub PysMasquerPara

dim oStyles as object
dim oStyle as object

oStyles = thiscomponent.StyleFamilies.getByName("ParagraphStyles")

if oStyles.hasByName("Masquer") then
  oStyle = oStyles.getByName("Masquer")
  ostyle.charHidden = not(ostyle.charHidden)
else
  msgbox "Style ""Masquer"" non trouvé", 64, "Masquer"
end if

end sub

Si tu réponds, merci de penser à utiliser la fonction "répondre à tous" du
logiciel de courrier ou du webmail de façon que la liste reçoive la réponse.

Cordialement
Pierre-Yves

Bonsoir,
Super pour la macro c'est exactemetn ce que je cherchais.
Vu votre efficacité et vos compétences, je me permets de vous demander autre chose dans le même style :
J'aimerai faire"disparaitre" un texte pour faire un texte à trou mais en mettant un "vide" à la place (plus grand d'ailleurs que mon texte d'origine) avec une macro :
sub macro_cacher

trou=thiscomponent.GetStyleFamilies.GetByName("CharacterStyles").GetByName("Cours à cacher")
     With trou
         If .charColor=0 Then
             .charColor=&hFFFFFFF
             .charKerning=200
         Else
             .charColor=0
             .charkerning=0
         End If
     End With

end sub

Cela marche bien sauf pour cacher des formules faites avec Dmaths qui elles restent malheureusement ...

Bonjour

SAUTON Frédéric wrote

Cela marche bien sauf pour cacher des formules...

Comme déjà indiqué, le plus simple serait d'insérer les formules dans des
sections qui se masquent très simplement.

Ci-joint un exemple n'utilisant pas la mise en section mais la gestion de la
"zone visible" des formules. La programmation est un peu plus complexe...
Il y a peut-être plus simple mais disons que c'est un exercice de style...

Lancer les procédures PysMasquerFormules et PysAfficherFormules
qui comme leur nom l'indique...

Nota: le temps de traitement peut être relativement long selon le
nombre de formules dans le document. Attendre les messages de fin
de traitement.

masquerFormules.odt
<http://nabble.documentfoundation.org/file/n4142492/masquerFormules.odt>

Cordialement
Pierre-Yves

Bonjour à tous,
N'ayant pas eu de réponse à mon dernier mail, je me demande si vous l'avez reçu (je suis nouveau sur cette liste...)
Merci d'avance

Bonjour,

Bonjour à tous,
N'ayant pas eu de réponse à mon dernier mail, je me demande si vous
l'avez reçu (je suis nouveau sur cette liste...)

En fait tu n'es pas abonné à la liste, tes messages sont publiés par ce
qu'un modérateur (moi en général) en autorise la publication.
Pour t'abonner il faut suivre les instructions données sur cette page :
https://fr.libreoffice.org/get-help/mailing-lists/
Cela ne peut pas se faire depuis la passerelle Nabble.

Bonne journée
JBF

Re,
OK ce que tu proposes marche bien sauf de temps en temps erreur :
"if (oUnElement.model.supportsService("com.sun.star.formula.FormulaProperties"))
then" dans la procedure PysMasquerFormules et PysAfficherFormules

Autre détail important que je n'avais pas bien précisé j'aimerai que les
formules ne se cachent que dans mon style de paragraphes à remplacer par
des trous ...
Je sais c'est assez complexe mais en fait je tape mes cours de maths
complets et souhaiterait "remplacer des réponses contenant parfois des
formules par un trou plus grand pour pouvoir écrire au TBI en classe
Merci d'avance du suivi de mes questions.
FS

Ce que je demande est peut être infaisable ?

Bonjour

FS wrote

Ce que je demande est peut être infaisable ?

Tu modifies ta demande le 11 et relance le 13...

Cette demande met en œuvre de la programmation. On ne peut y répondre
par oui ou par non, ou en indiquant quel menu, quel paramètre... utiliser.

Sur cette liste ne répondent que des bénévoles, quand ils ont le temps,
l'envie, les moyens, les connaissances, les idées, etc.

Plus les bénévoles sont nombreux à s'entraider, plus ils ont le temps pour
répondre, les questions "en attente" étant moins nombreuses...

Pour les autres, je ne sais pas. Pour ce qui me concerne, dans l'idéal,
j'aimerais
pouvoir faire davantage... dans la réalité je fais des choix...

Cela dit, ci-joint l'exemple précédent enrichi du test sur le style de
paragraphe.
Seules les formules figurant dans un paragraphe en style "Masquer"
(arrière-plan coloré dans l'exemple) sont traitées.

masquerFormules.odt
<http://nabble.documentfoundation.org/file/n4143251/masquerFormules.odt>

Cordialement
Pierre-Yves

Bonjour,
La proposition marche très bien sur un style de paragraphe. j'aimerai affiner cette procédure en ne demandant de cacher les formules d'un style *de caractère* (qui fait partie d'une phrase dont j'aimerai cacher seulement une partie contenant donc ces formules)
J'espère que c'est compréhensible.
Frédéric

PS : j'ai toujours une erreur sur mon doc à moi avec "if (oUnElement.model.supportsService("com.sun.star.formula.FormulaProperties")) then" alors que sur le fichier test , ça marche nickel ...

Bonjour

FS wrote

Autre détail important que je n'avais pas bien précisé j'aimerai que les
formules ne se cachent que dans mon style de paragraphes

puis...

FS wrote

La proposition marche très bien sur un style de paragraphe. j'aimerai
affiner cette procédure en ne demandant de cacher les formules d'un
style *de caractère*

bon...

Pour les caractères, tu as déjà les instructions. Les formules utilisent
un style de cadre. Il suffit de créer un style particulier à affecter aux
formules devant être masquées.

Ci-joint dernière modification du programme pour traiter ce type de style.
masquerFormules.odt
<http://nabble.documentfoundation.org/file/n4143316/masquerFormules.odt>

Cordialement
Pierre-Yves

Bonjour,

Post très intéressant :slight_smile:
Masquer les sections en fonction de variables ne m'était pas venu à l'esprit.
Dans cette optique, petite question pour Pierre-Yves :

Existe t-il un moyen de définir une variable en fonction d'un champ dont la valeur varie lors d'un publipostage ?

Le but serait d'afficher ou de masquer certains articles de lois en fonction de l'arrêté à envoyer au destinataire par exemple.

Cordialement,

Nicolas Abel.

Bonjour

Nicolas ABEL wrote

Existe t-il un moyen de définir une variable en fonction d'un champ dont
la valeur varie lors d'un publipostage ?

En principe oui... mais voulant te répondre avec un exemple je me suis
rendu compte qu'un bug avait été introduit, et remonté, mais visiblement
non corrigé. Je l'ai rouvert en y joignant un document et une procédure
de test:
https://bugs.documentfoundation.org/show_bug.cgi?id=70346

Cordialement
Pierre-Yves

Merci beaucoup Pierre-Yves.
Cette fonctionnalité ouvre un nouveau monde des possibles : celle d'automatiser la création de documents complets.
Remarquable...merci encore.

Cordialement,

Nicolas Abel.

Bonjour,
JE me permets de vous reposer la question précédente avec comme idéal sans créer un style de formules particulier
Merci d'avance pour vos réponses
Frédéric