[Résolu] [Calc] Lire la couleur d'une cellule gérée par MFC

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 !
JacquesF
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 08 oct. 2012 14:40

[Résolu] [Calc] Lire la couleur d'une cellule gérée par MFC

Message par JacquesF »

Bonjour,

J'ai un problème simple mais je n'ai trouvé aucune solution ni dans le forum, ni via Google.
Je voudrais connaître la couleur de fond d'une cellule qui est modifiée dynamiquement par une MFC.

Avec Xray, j'ai parcouru tout ce qui pouvait me semble possible d'indiquer la couleur de la cellule :
- la cellule directement bien sur
- l'objet Contrôleur car c'est lui qui gère l'affichage

À chaque fois j'obtiens -1 comme couleur de fond et Default comme style.
Est-ce que c'est possible via l'API ? (à part lire les conditions de mises en forme et les tester une par une par macro...).

Merci de vos lumières
Jacques
Dernière modification par JacquesF le 11 févr. 2018 14:22, modifié 1 fois.
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc] Comment lire la couleur d'une cellule gérée par M

Message par Hubert Lambert »

Bonjour,
JacquesF a écrit :à part lire les conditions de mises en forme et les tester une par une par macro...
Je crains malheureusement que ce ne soit le seul moyen d'y parvenir...

Bonne soirée.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
JacquesF
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 08 oct. 2012 14:40

Re: [Calc] Comment lire la couleur d'une cellule gérée par M

Message par JacquesF »

Merci Hubert,

J'avais peur que ce soit la seule méthode, mais je ne désespère pas encore d'une autre piste :roll:
Bon WE à toi

Jacques
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Comment lire la couleur d'une cellule gérée par M

Message par Dude »

Cette question n'a pas de sens.
C'est comme vouloir modifier un moteur de voiture si on souhaite changer de route.
Une MFC utilise une formule ou teste le contenu et applique un style de cellule.
L'accès passe par la structure com.sun.star.sheet.XSheetConditionalEntry

La documentation ci-dessus n'a pas été localisée, une traduction de ta part serait donc la bienvenue.
JacquesF
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 08 oct. 2012 14:40

Re: [Calc] Comment lire la couleur d'une cellule gérée par M

Message par JacquesF »

Merci Dude,

Mais je viens de parcourir la documentation indiquée et l'API, sans tout comprendre je dois l'avouer, je ne suis pas un programmeur de métier.
Je ne trouve pas de moyen pour accéder à l'information directement.

Quand à savoir si ma question a un sens, je trouve que quand on a une MFC complexe sur une grande plage de cellules, et donc de multiples conditions, il pouvait être plus simple de lire le style appliqué à une cellule pour connaître son "état" plutôt que de refaire les mêmes tests que la MFc avec une macro.

Je vais trouver une autre piste en ce cas.
Bonne fin de WE.

Jacques

Quand à la traduction, mon niveau d'anglais courant est très basique, il est un peu meilleur quand on parle d'informatique. Voici ce que je te propose :
Une cellule peut être formatée automatiquement avec un format conditionnel, dépendant de son contenu ou du résultat d’une formule.
Un format conditionnel se compose de plusieurs entrées de condition contenant la condition et le nom d'un style de cellule.
Le style de la première condition rencontrée, vrai ou "non nul", est appliqué à la cellule.

Une cellule ou un objet de plage de cellules contient les propriétés ConditionalFormat et ConditionalFormatLocal.
Ces propriétés renvoient l'interface com.sun.star.sheet.XSheetConditionalEntries du conteneur de format conditionnel com.sun.star.sheet.TableConditionalFormat.
Les objets des deux propriétés sont égaux, sauf pour la représentation des formules.
La propriété ConditionalFormatLocal utilise le nom des fonctions dans le langage courant.

Après qu'un format conditionnel ait été modifié, il doit être réinséré dans l'ensemble des propriétés de la cellule ou de la plage de cellules.

Une condition d’entrée d’un format conditionnel est représenté par le service com.sun.star.sheet.TableConditionalEntry.
Il implémente deux interfaces :
- L’interface com.sun.star.sheet.XSheetCondition obtient et définit l'opérateur, la première et la deuxième formule et l'adresse de base pour les références relatives.
- L’interface com.sun.star.sheet.XSheetConditionalEntry obtient et définit le nom du style de cellule.
Le service com.sun.star.sheet.TableConditionalFormat contient toutes les conditions de format et retourne l’objet com.sun.star.sheet.TableConditionalEntry.
L’interface com.sun.star.sheet.XSheetConditionalEntries insère les nouvelles conditions et les retire.
La méthode addNew() insère une nouvelle condition. Il attend une séquence de l’objet com.sun.star.beans.PropertyValue.
Les propriétés suivantes sont supportées :
- Operator: Une constante com.sun.star.sheet.ConditionOperator décrivant l’opération à effectuer.
- Formula1 et Formula2: Chaînes de caractères contenant les valeurs ou les formules à évaluer. Formula2 n’est utilisé que si la proproété Operator contient BETWEEN ou NOT_BETWEEN.
- SourcePosition: Une structure qui contient l’adresse de base pour les références de cellules relatives dans les formules.
- StyleName: Le nom du style de cellule à appliquer.
La méthode removeByIndex() supprime une entrée de conditions à la position indiquée.
La méthode clear() supprime toutes les entrées de conditions.

L’exemple suivent applique un format conditionnel à une plage de cellule. Il utilise le style de cellule "MyNewCellStyle" qui est appliqué à chaque cellule contenant une valeur supérieure à 1, xSheet est l'interface com.sun.star.sheet.XSpreadsheet d'une feuille de calcul.
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
Répondre