macro et cadre

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:: lruivard@ac-lyon.fr
Sujet:: macro et cadre
OS:: Linux
Version:: 5.1.x
Question:: Dans Writer,Je voudrais, à travers la macro ci-dessous, changer la couleur de mes formules mathématiques (textes à trou en blanc ou bleu)
Voici la macro que j'ai faite... elle marche très bien pour mon texte avec le style "eleve" mais pas pour la couleur du texte de mes formules qui ont le style "eleveF"... la variable charColor n'est pas reconnu... savez vous le nom de la variable qui gère la couleur des textes dans un cadre ?
Merci

Sub Eleve
dim trou1 as object
dim trou2 as object
  trou1=thiscomponent.GetStyleFamilies.GetByName("CharacterStyles").GetByName("eleves")
  trou2=thiscomponent.GetStyleFamilies.GetByName("FrameStyles").GetByName("eleveF")
  With trou1
    If .charColor=128 Then
      .charColor=&hFFFFFF
    Else
      .charColor=128
    End If
  End With
  
  With trou2
    If .CharColor=128 Then
      .CharColor=&hFFFFFF
    Else
      CharColor=128
    End If
  End With
  
End Sub

Bonjour,

Question:: Dans Writer,Je voudrais, à travers la macro ci-dessous, changer la couleur de mes formules mathématiques (textes à trou en blanc ou bleu)
Voici la macro que j'ai faite... elle marche très bien pour mon texte avec le style "eleve" mais pas pour la couleur du texte de mes formules qui ont le style "eleveF"... la variable charColor n'est pas reconnu... savez vous le nom de la variable qui gère la couleur des textes dans un cadre ?
Merci

Avant d'aller plus loin...

Sub Eleve
dim trou1 as object
dim trou2 as object
  trou1=thiscomponent.GetStyleFamilies.GetByName("CharacterStyles").GetByName("eleves")
  trou2=thiscomponent.GetStyleFamilies.GetByName("FrameStyles").GetByName("eleveF")
  With trou1
    If .charColor=128 Then
      .charColor=&hFFFFFF
    Else
      .charColor=128
    End If
  End With
  
  With trou2
    If .CharColor=128 Then
      .CharColor=&hFFFFFF
    Else

Il n'y aurait pas un pb là ?

                        vv

      CharColor=128

je ne vois pas le point de ".charColor"
Du coup CharColor devient l'identificateur d'une variable inconnue.

    End If
  End With
  
End Sub

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,

Bonsoir,

Merci pour ce retour, effectivement il manquait un point... mais ce
n'est pas ce qui bloque le message d'erreur est dès le 1er ".charcolor"
qui n'est pas connu pour les cadres (Frame)... j'ai essayé la commande
.backColor qui fonctionne bien pour l'arrière plan mais je cherche à
modifier la couleur des caractères de mon cadre formule... j'ai
l'impression qu'elle n'existe pas...

en fait, il ne s'agit pas d'un cadre à proprement parler mais d'un objet OLE. On accède à ces objets par
ThisComponent.getEmbeddedObjects()
qui est une propriété qui contient un array de chaînes ElementNames().

Il faut parcourir ce tableau à la recherche de l'objet OLE kivabien puis accéder aux propriétés de son modèle qui vous intéressent.

J'ai trouvé ici
https://superuser.com/questions/290197/how-to-change-the-font-of-all-equations-in-libreoffice-writer

ce bout de code, qui va vous permettre d'atteindre votre objectif :

8< ----------------------------------------------
Sub Main
     embeddedObjects = ThisComponent.getEmbeddedObjects()
     elementNames = embeddedObjects.getElementNames()
     for i=0 to UBOUND(elementNames)
         element = embeddedObjects.getByName(elementNames(i)).Model
         if (not isNull(element)) then
             if (element.supportsService("com.sun.star.formula.FormulaProperties")) then
                 element.BaseFontHeight = 14
                 element.FontNameVariables= "Arial"
                 element.FontNameFunctions = "Arial"
                 element.FontNameNumbers= "Arial"
                 element.FontNameText= "Arial"
             endif
         endif
     next i
     ThisComponent.reformat()
End Sub
---------------------------------------------- >8

Pour ce qui est de la couleur, je vois pas d'informations disponibles dans le cas de formules Math, ce qui est normal puisque dans ces objets la couleur est réglée par des tags color{} placés aux endroits stratégiques.

Pour vous simplifier la vie, placez vos formules dans des constantes, sous deux formes : l'une dans la couleur nominale, l'autre avec les tags "color{}" aux endroits stratégiques.
Ensuite, dans le code, il vous suffira de basculer la propriété Formula dans la forme qui convient selon le mode d'affichage désiré (le bout de code ci-dessus vous donne le canevas [je l'ai vérifié, il marche]).

Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,

Bonjour,

Merci pour ce retour, effectivement il manquait un point... mais ce n'est pas ce qui bloque le message d'erreur est dès le 1er ".charcolor" qui n'est pas connu pour les cadres (Frame)... j'ai essayé la commande  .backColor qui fonctionne bien pour l'arrière plan mais je cherche à modifier la couleur des caractères de mon cadre formule... j'ai l'impression qu'elle n'existe pas...

Bon Week-end

Luc R

Merci...

Je vais travailler ça demain et vous tiens au courant...

Encore merci pour la rapidité :wink: