[OXT] Fonction Calc pour compter les styles

Discussions sur les projets et applications développés en liaison avec une suite bureautique libre.

Modérateur : Vilains modOOs

Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

[OXT] Fonction Calc pour compter les styles

Message par Hubert Lambert »

 Ajout : CountStyle a été refondu et est maintenant disponible sur le site des extensions de LibreOffice (voir aussi ici) :) 
Bonjour,

Une demande récurrente sur le forum (et ailleurs) concerne la possibilité d’effectuer des calculs sur base du formatage des cellules. Plusieurs solutions existent sur le site, mais qui se heurtent à deux principales difficultés : l’actualisation en temps réel (contournée par l’association avec une fonction dite "volatile" comme ALEA()) et la non-adaptabilité de la plage de référence, passée comme chaîne de caractères.
Comme ce problème est un exercice idéal pour explorer et mettre en pratique les types avancés disponibles pour la création d’un addin, je vous propose ci-dessous un premier essai, qui prend la forme d’une d’extension ajoutant une nouvelle fonction nommée COUNTSTYLE().
countstyle.png
Avertissement
Cette extension est encore en version bêta. Si vous l’utilisez avec des données sensibles, pensez à les sauvegarder !

Caractéristiques
L'extension est codée en python.
Comme tout "add-in", la fonction est disponible dans l'assistant de fonctions et la liste des arguments apparaît lors de la frappe dans la barre de formule.
Pour le reste, le moteur de formules de Calc gère les références comme pour une fonction native : la plage source est adaptée en fonction des déplacements, ajouts ou suppressions de cellules; les références entre feuilles différentes sont évidemment possibles.

Limitations
1. Par choix, cette fonction ne compte que les cellules du style fourni en paramètre et ne tient pas compte du formatage direct.
2. La fonction ne compte pas les styles appliqués par formatage conditionnel : ce serait d’abord un réel casse-tête à programmer, c’est ensuite peu utile puisqu’il suffit a priori de compter les cellules sur base du même critère que celui du formatage conditionnel.

Mode d’emploi
La fonction attend trois arguments, le troisième étant optionnel (voir l'image plus haut) :
- <plage> : les cellules de référence;
- <style> : le style à compter (sensible à la casse);
- <fonction> : un entier représentant le type d’opération à effectuer.
Si le troisième argument est omis ou égal à 0, COUNTSTYLE() compte simplement les cellules du style donné. Les autres fonctions sont :
1 : calcule la somme des cellules
2 : compte les cellules non vides
3 : calcule la moyenne
4 : renvoie la valeur maximale
5 : renvoie la valeur minimale
6 : compte les valeurs numériques

Installation
Télécharger le fichier joint, l'installer à partir du gestionnaire d'extensions (accessible depuis le menu Outils) et relancer OpenOffice/LibreOffice.

Un grand merci d’avance pour vos retours, en particulier sur toute éventuelle erreur d’affichage ou de comportement.
Et si vous avez une bonne idée pour franciser le nom, n’hésitez pas non plus... :wink:
 Ajout : Problèmes connus
:!: Avec LibreOffice, l'assistant de fonction plante le programme dès qu'il est en mesure d'évaluer la formule COUNTSTYLE() (voir messages ci-dessous). En revanche pas de problème depuis l'interface normale. OpenOffice ne présente pas ce problème.
[Problème résolu dans la version 2]

Dans de rares cas, la formule peut ne pas être mise à jour automatiquement. Il faut alors forcer le recalcul avec la touche F9.
La fonction ne marchera pas lorsqu'un style est appliqué avec la fonction STYLE(), ce qui équivaut à un formattage conditionnel (voir "Limitations" ci-dessus). 
Pièces jointes
countstyle.oxt
COUNTSTYLE version 2.1.1 (31.5.2018)
Le cas échéant, désinstaller la version 1 avant d'installer celle-ci.
(5.69 Kio) Téléchargé 1100 fois
countstyle.oxt
COUNTSTYLE version 1.
(7.02 Kio) Téléchargé 566 fois
Dernière modification par Hubert Lambert le 25 oct. 2018 15:17, modifié 37 fois.
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)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par zeguedon »

Bonjour,

Je m'étais déjà penché sur la question ici : [Calc]Fonction NBSTYLE()
Je te laisse décortiquer et éventuellement améliorer si le cœur t'en dit. Je m'étais déjà attelé à lui ajouter un paramètre somme et moyenne (pas pensé à max et min), mais mon emplois du temps ne me permet pas de m'y consacrer sérieusement en ce moment. Donc à toutes fins utiles...

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour zeguedon,

Merci pour ton intérêt.
J'avais bien vu ta solution, et la manière intellignte avec laquelle tu contournes en même temps les problèmes du référencement et de l'actualisation.
Mais l'objectif et l'intérêt d'une extension sont justement de pouvoir s'affranchir de ces contournements.
Reste encore à voir bien sûr si cela fonctionne correctement...
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)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par jeanmimi »

Bonjour,
Avec ma version LO 5.2, j'ai un crash dès que je clique dans la Zone Style de la fenêtre de paramétrage après avoir sélectionné les cellules.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour jeanmimi,

Grand merci pour le retour.
J'ai fait les tests sur WIndows 7 et Linux Mint, sans reproduire. Il faudra que je trouve un poste avec Windows 10...
Pour être bien certain : as-tu redémarré LibO avant de tester la nouvelle fonction ?
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)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par jeanmimi »

Hubert Lambert a écrit :Pour être bien certain : as-tu redémarré LibO avant de tester la nouvelle fonction ?
Oui, après l'installation de l'extension, puis à chaque plantage, soit 4 fois en tout.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Bonjour,

Tout d’abord chapeau bas pour l’intégration, qui permet un usage depuis l’assistant de fonction :bravo:

Test avec AOO 4.1.2 sous Win 10 pro :
Ok à l’installation, usage a priori normal au redémarrage, tous les résultats corrects.

Par contre, selon la vélocité avec laquelle on tire la poignée de recopie sur la droite, j’ai un crash d’AOO (la formule est en référence relative, mais ça ne devrait pas poser de problème, et , en tout état de cause, je ne reproduis pas en recopiant -toujours via la poignée- cellule par cellule)
CountStyle_fatal_error_AOO412Win10.png
Après plantage, je n’arrive plus avec le fichier en question, à recopier en H3 (formule OK en E3, recopie ok pour F3 et G3), j’obtiens une erreur 522 (référence circulaire)
CountStyle_fatal_error_2_AOO412Win10.png
En décalant la formule de 2 lignes via le menu contextuel Insérer > Décaler les cellules vers le bas, pour éviter que la formule ne traite des cellules contenant la formule(*), en vérifiant que la plage est toujours A1:C4, le plantage et l’erreur 522 persistent.
(*)Si la formule est en H3, elle est sensée traiter le contenu de D1:F4

J’ai joins les 2 captures (je ne sais pas si cela à grand intérêt), le fichier malade si tu aimes mettre les mains dans le cambouis :wink: .
Pièces jointes
Test_countstyle.ods
(7.73 Kio) Téléchargé 463 fois
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

@jeanmimi
Merci. Je vais essayer d'explorer ça dès que j'ai accès à Windows 10

@Jeff
Merci beaucoup pour ces tests, et pour le fichier qui illustre le problème.
Apparemment l'erreur ne se produit qu'avec les valeurs 3 (moyenne), 4 (max) et 5 (min) :shock: . Je vais devoir (re)mettre les mains dans le cambouis en effet :D
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Alors que je poursuivais tranquillement mes séances de tortures sur ta fonction, j’ai eu une erreur qui devrait être plus explicite :mrgreen:
Pièces jointes
CountStyle_fatal_error_3_AOO412Win10.png
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Jeff a écrit :Alors que je poursuivais tranquillement mes séances de tortures sur ta fonction :mrgreen:
Oups, désolé, je ne voulais pas en arriver là... :oops: :wink:

Mais surtout merci d'avoir mis le doigt sur ces erreurs de codage !
Il s'agit de deux erreurs différentes, mais liées à la même fonction computeFunction. Dans le premier cas, j'ignorais que les opérations AVERAGE, MAX et MIN retournent une erreur si les valeurs minimales pour les calculer ne sont pas fournies.
Dans le deuxième cas, mon code gérait mal les valeurs non autorisées pour le troisième argument.
J'édite le premier fil pour poster l'extension corrigée.
 Ajout : Finalement le premier problème n'est pas tout à fait réglé : il faut encore trouver le moyen de renvoyer la bonne erreur en cas de référence circulaire. 
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

En mettant une valeur non autorisée pour le troisième argument, valeur renseignée ici en I3 (donc pas "en dur" dans la formule), j’ai un plantage bizarre :
  • Le pointeur de souris signale un travail en arrière-plan (je l’ai laissé environ 2 minutes avant de perdre patience)
  • La saisie est impossible dans les cellules cependant :
    • J’arrive à sélectionner des cellules autres (sans pouvoir saisir)
    • J’arrive à accéder à la barre de menu et aux barres d’outils
Après avoir choisi le menu Fichier > Quitter, et répondu favorablement à l’enregistrement, le fichier-test est HS ("erreur de lecture, une erreur inconnue s’est produite") je te le joins quand même si la "dissection" peut t’apporter des indications...
Test_countstyle.ods
Fichier HS
(8.02 Kio) Téléchargé 361 fois
 Ajout : J’ai oublié la capture :
CountStyle_error_4_AOO412Win10.png
CountStyle_error_4_AOO412Win10.png (4.97 Kio) Consulté 24457 fois
  
 Ajout : - 2 -

Avec un style inexistant et un 3ième paramètre erroné, j’ai aussi un crash, après avoir validé la boite de dialogue ci-dessous:
CountStyle_fatal_error_5_AOO412Win10.png
  
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

J'ai voulu allé trop vite et n'ai pas testé suffisamment les corrections. :oops:
Cette troisième version (voir premier message) fixe le problème... j'espère !

Je cherche encore comment renvoyer l'erreur #522! plutôt que #VALEUR! en cas de référence circulaire, mais je ne suis pas certain que cela soit possible pour une fonction "volatile" comme celle-ci...

Merci encore pour le temps que tu as bien voulu y consacrer.
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)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par zeguedon »

Bonjour,

Ayant un petit 1/4 d'heure devant moi, je viens d'essayer ton extension :

Ouverture de l’assistant fonction,
Clic sur la fonction COUNTSTYLE() >> OK
Clic dans la zone plage, puis sélection de la plage >> OK
Clic dans la zone style >> Plantage

Après trois tentatives, le comportement persiste.
Je reviendrai dessus dans la soirée avec des essais de saisie directement dans la barre de formule

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour Zeguedon,

Merci pour test tests. Je reproduis en effet, et du coup je comprends mieux - mais un peu tard - le précédent message de jeanmimi.
Je n'imaginais pas qu'un problème pourrait surgir de là (et sur LibreOffice uniquement). Je dois encore faire le grand nettoyage dans la partie du code qui gère les événement de la feuille, j'espère que ça résoudra par la même occasion ce problème...
Cordialement.
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)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par zeguedon »

Bonjour,
Hubert Lambert a écrit :Et si vous avez une bonne idée pour franciser le nom, n’hésitez pas non plus... :wink:
Oui, j'envisageais de nommer la deuxième version de NBSTYLE() : NBSTYLEPLUS() car en plus de compter les styles elle effectue des opérations sur les valeurs du style concerné. Et comme je vais probablement abandonner l'idée de poursuivre dans cette voie si ton extension fonctionne correctement, je te lègue ce nom s'il te convient.

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour à tous,

J'ai mis à jour l'extension dans le premier message.
Le code a été revu et est désormais nettement plus rationnel et plus robuste.
Si la fonction affiche # VALEUR!, il s'agit en principe soit d'un problème lié au paramètre 3 "fonction" (valeur non admise ou plage de référence sans valeur numérique), soit d'un problème de référencement circulaire (à régler dans les options donc).

Concernant l'assistant de fonction, il plante toujours avec LibreOffice au moment de l'évaluation, mais je n'en vois vraiment pas la cause :shock: . Je creuse donc encore de ce côté...

Un grand merci d'avance à tous ceux qui voudront bien tester une nouvelle fois :P .
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)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par zeguedon »

Bonjour,

Pour info, l'assistant fonction fonctionne correctement si je prends la précaution de renseigner la plage de cellule en dernier (piste à creuser).
Par contre si l'on saisit le nom du style sans les doubles quottes dans l'assistant (ce qui devrait-être la bonne pratique), la fonction retourne #NOM ?. Je m'attendais à ce que l'assistant se contente du nom du style, et qu'il ajoute automatiquement ces quottes :?

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour zeguedon,

Merci pour tes tests et pour ton intérêt.
zeguedon a écrit :Pour info, l'assistant fonction fonctionne correctement si je prends la précaution de renseigner la plage de cellule en dernier (piste à creuser)
Malheureusement je n'arrive pas à reproduire. Jusqu'ici ça plante dès que les infos minimales sont fournies pour renvoyer un résultat... :(
zeguedon a écrit :Par contre si l'on saisit le nom du style sans les doubles quottes dans l'assistant (ce qui devrait-être la bonne pratique), la fonction retourne #NOM ?. Je m'attendais à ce que l'assistant se contente du nom du style, et qu'il ajoute automatiquement ces quottes :?
Ça c'est normal : sans les guillemets, le programme cherche une plage nommée. Celle-ci n'existant pas, il renvoie cette erreur.

Par ailleurs j'ai compilé l'exemple du SDK (ExampleAddin) implémantant une interface XVolatileResult comme celle-ci, et cela plante également l'assistant de fonction. Donc je commence à croire à une régression de LibreOffice. Je vais remplir un rapport de bogue, on verra...

Cordialement.
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)
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 19:25

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par zeguedon »

Bonjour Hubert,
Hubert Lambert a écrit :
zeguedon a écrit:
Par contre si l'on saisit le nom du style sans les doubles quottes dans l'assistant (ce qui devrait-être la bonne pratique), la fonction retourne #NOM ?
Ça c'est normal : sans les guillemets, le programme cherche une plage nommée. Celle-ci n'existant pas, il renvoie cette erreur.
Je ne voudrais pas paraître pointilleux, mais de mon point de vue, le paramètre "style" devrait-être évalué avant que la fonction soit calculée, pour s'assurer que ce qui est saisit est bien un style nommé, et dans la cas contraire afficher un message pour avertir que ce style n'existe pas. Idem pour les plages nommées :

Code : Tout sélectionner

if oDoc.NamedRanges.hasByName(Plage) Then	 	
		Plage = lesZonesNom.GetByName(Plage).GetReferredCells.RangeAddress
		NBSTYLE = Compter(Plage ,Style)
	else
		print "Cette plage n'existe pas !" 	
	end if  
Hubert Lambert a écrit :
zeguedon a écrit:
Pour info, l'assistant fonction fonctionne correctement si je prends la précaution de renseigner la plage de cellule en dernier (piste à creuser)
Malheureusement je n'arrive pas à reproduire. Jusqu'ici ça plante dès que les infos minimales sont fournies pour renvoyer un résultat... :(
J'avais fais ce test sur une installation récente d'Ubuntu 16.04 avec la version des dépôts. Je confirmerai plus tard si je reproduis (ou pas) avec une officielle.

A+
 Ajout : Installation d'une officielle 5.1.5.2. Si je remplis l'assistant en commençant par le bas, je n'ai pas de plantage :
HubertLambert.png
 
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Hubert Lambert a écrit :Ça c'est normal : sans les guillemets, le programme cherche une plage nommée. Celle-ci n'existant pas, il renvoie cette erreur.
Je me suis sans doute mal exprimé. En fait de "programme", il faut bien sûr lire "l'assistant de fonction".
zeguedon a écrit :de mon point de vue, le paramètre "style" devrait-être évalué avant que la fonction soit calculée, pour s'assurer que ce qui est saisit est bien un style nommé, et dans la cas contraire afficher un message pour avertir que ce style n'existe pas.
C'est plus ou moins le cas : si le style n'existe pas, COUNTSTYLE() renvoie 0 (pour le comptage simple des cellules) ou #N/D (pour les opérations).
zeguedon a écrit :Si je remplis l'assistant en commençant par le bas, je n'ai pas de plantage :
Le plantage survient "dès que les infos minimales sont fournies pour renvoyer un résultat". Essaie en ajoutant la plage en dernier lieu :wink: .
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)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par jeanmimi »

zeguedon a écrit :Si je remplis l'assistant en commençant par le bas, je n'ai pas de plantage
Je n'ai plus de plantage sur ma version LO 5.2 mais LO se fige et la boîte de dialogue se noircie et LO ferme.
Pièces jointes
COUNTSTYLE.jpg
Dernière modification par jeanmimi le 14 août 2016 16:48, modifié 1 fois.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Merci jeanmimi.
Il faudra décidément que je trouve en environnement Windows 10 pour mes tests...
En attendant, et pour information, voici le rapport de bogue : https://bugs.documentfoundation.org/sho ... ?id=101473.
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Testé sous Xubuntu = plus aucun plantage

En revanche, je n'explique pas le résultat suivant :
Capture d’écran_2016-08-29_16-07-51.png
Si je fais une fonction ESTNUM sur A2 j'obtiens FAUX.

En fait, je ne réussi pas à exploiter le résultat renvoyé :? , je zappe quelque chose ?
(fichier joint en fin de post)

Désolé pour le retour tardif :oops:

A +
 Ajout : Je ne vois pas comment obtenir une erreur de référence circulaire.

Si on prends l’exemple de la fonction STYLE(), on sait que cette fonction vaut 0.
Pour cette raison, on l’ajoute à un résultat numérique.
On l’englobe dans une fonction T() et on la concatène à un résultat alphabétique.

Dès lors (mais je suis un profane en la matière), ne peut-on pas dire qu’une fonction vaut 0 ?

Dans ce cas, si en A1 je mets la formule =COUNTSTYLE(A1;"Par défaut") j’obtiens bien 0.

En testant ainsi, le seul résultat qui me parait illogique est avec le paramètre 6 (quoique...on teste toujours une fonction)

En revanche, ne pas pouvoir utiliser le résultat dans un calcul ou autre formule (même par concaténation) est pénalisant.

Je ne vois donc pas comment on pourrait obtenir une erreur 522, en revanche, une erreur #VALEUR est tout a fait envisageable.

A trop en traquer une, aurais-tu fais une impasse sur l’autre ? :wink:

Même résultat sous Win 10 :
CountStyle_V8.png
CountStyle_V8.png (11.68 Kio) Consulté 24181 fois
  
Pièces jointes
Test_CountStyle_V8.ods
(8.48 Kio) Téléchargé 393 fois
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour Jeff,

Un tout grand merci pour ces "stress tests" implacables !
Ces derniers me font prendre conscience que, pour exploiter les valeurs renvoyées par COUNTSTYLE(), il faut activer l'option d'itération (pas et valeur à 1 par exemple). Ce n'est pas vraiment commode, et j'ignore la cause... Sans doute est-ce dû à la manièr dont fonctionne les résultats "volatiles" :( .
En plus, sous AOOo cette fois, l'option d'itération ajoute un problème : l'affichage se fige, alors même que la valeur est correctement envoyée à la fonction (je la trace dans les logs).
Un vrai casse-tête décidément.
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Hubert Lambert a écrit :Un vrai casse-tête
Effectivement, j'arrive à m'embrouiller dans mes tests, tu as le même comportement avec la version 1 ?
(Je ne parle pas du fait de s’embrouiller mais de celui d’exploiter le résultat :mrgreen:, je n'ai gardé aucune version précédente)

Dans une même formule, on peut utiliser COUNTSTYLE (voir en A6 dans la capture), en revanche, on ne peut pas le faire en "appelant" le résultat renvoyé par COUNTSTYLE dans une autre cellule (voir en A11 dans la capture) :
Cliquer sur l'image pour zoomer
Cliquer sur l'image pour zoomer
A +
 Ajout : Cadeau :
Cliquer sur l'image pour zoomer
Cliquer sur l'image pour zoomer
Le contenu est bien interprété par CELLULE dans l’assistant, mais erreur 522 dans la cellule.
(idem avec d’autres fonctions : ABS, SOMME etc... = OK dans assistant et erreur dans cellule)

Le type de valeur, le format de cellule ainsi que le statut de la protection sont bien interprétés par la même fonction CELLULE.

:fou: 
 Ajout : 2 :
Dans le même genre de fonction ajoutée par extension, il y a aussi moneytext/numbertext ; une source potentielle d’inspiration ? 
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Jeff a écrit :Effectivement, j'arrive à m'embrouiller dans mes tests, tu as le même comportement avec la version 1 ?
(Je ne parle pas du fait de s’embrouiller mais de celui d’exploiter le résultat :mrgreen:, je n'ai gardé aucune version précédente)

Dans une même formule, on peut utiliser COUNTSTYLE (voir en A6 dans la capture), en revanche, on ne peut pas le faire en "appelant" le résultat renvoyé par COUNTSTYLE dans une autre cellule (voir en A11 dans la capture) 
Un grand merci encore : après de nombreux essais (le débogage n'est vraiment pas simple avec un addin :roll: ), je peux enfin affirmer que ce problème de référence circulaire était bien dû... à mon propre code :) . C'est ce même problème qui rendait impossible l'exploitation des résultats.

J'ai placé la version corrigée dans le premier message.
Jeff a écrit :Dans le même genre de fonction ajoutée par extension, il y a aussi moneytext/numbertext ; une source potentielle d’inspiration ?
En effet, en plus c'est également écrit en python. J'ai commencé par étudier ce code quand j'ai eu besoin de me lancer dans les addins (mes premiers tests sont ici). Je suis relativement à l'aise avec cela maintenant. La difficulté avec COUNTSTYLE consiste à dompter (le mot n'est pas trop fort) l'objet XVolatileResult comme valeur de retour de la fonction. Cet objet permet de mettre à jour la valeur d'une cellule indépendamment du mécanisme classique (modification de valeur de cellules). Avec une fonction classique, il serait impossible d'obtenir une mise à jour sur base d'un simple changement de style.
J'ai d'ailleurs fait une version classique de COUNTSTYLE pour tester l'algorithme de base, mais qui nécessite d'être asociée à une fonction volatile native si l'on souhaite une mise à jour "en direct", genre

Code : Tout sélectionner

=COUNTSTYLE(A1; "Default")+ALEA()*0
Ça fonctionne impeccablement, mais on perd un peu l'intérêt d'une fonction spécifique... :? :).
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Il semblerait qu’avec cette version 9, tu tiennes ta Release Candidate, je n’ai pas réussi à la mettre en défaut :super:

Je vois qu’en plus tu as inclus le traitement de versions obsolètes lors de l’installation via le gestionnaire, et que la localisation En est faite :D

Comme j’aime bien critiquer :mrgreen: , une coquille (qui ne manque pas de q) sur le texte de présentation en Fr :
&quot;formatées&quot; ne prends qu’un seul &quot;t&quot; en français, cliquer sur l'image pour zoomer
"formatées" ne prends qu’un seul "t" en français, cliquer sur l'image pour zoomer
Et sur le texte de présentation en En :
Tu ne manque pas d’ &quot;r&quot; ;)
Tu ne manque pas d’ "r" ;)
CountStyle_V9_formratted.png (3.51 Kio) Consulté 24095 fois
Concernant la localisation du nom de la fonction en Fr, je serai tenté de dire...que peu de personnes s’en préoccupent :mrgreen:
Cependant, si je devais faire une proposition, je serai tenté par STYLE_NB (ou STYLENB), qui me permettrait de trouver côte à côte dans l’assistant les fonctions concernant les styles.

Du beau travail, bravo ! :bravo:
 Ajout : À place de "dans un style donné" je verrai mieux "dans un style enregistré" 
 Ajout : 2 :

De la même façon que NumberText donne le mode d'emploi via le gestionnaire :
Aide NumberText, cliquer sur l'image pour zoomer
Aide NumberText, cliquer sur l'image pour zoomer
N'aurais-tu pas intérêt à intégrer "l'aide", notamment sur le troisième paramètre, lors de l'affichage dans le gestionnaire (j'ignore la complexité de la chose).

Cela permettrait également d'avoir une aide localisée.

  
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Bonjour Jeff,

Un tout grand merci pour toutes ces interventions précieuses et constructives :D .
Jeff a écrit :Il semblerait qu’avec cette version 9, tu tiennes ta Release Candidate, je n’ai pas réussi à la mettre en défaut
Malheureusement j'y suis moi-même parvenu : si, par insertion ou suppression de colonnes ou de lignes, on modifie la source puis on revient à une configuration déjà connue de la formule (par exemple supprimer une ligne puis annuler l'action), il faudra faire F9 pour mettre à jour celle-ci.
C'est un vrai casse-tête hélas : avec deux sources concurrentes de recalcul (mise en forme de la plage de référence et évaluation "normale" de la formule), il est quasi impossible d'éviter les références circulaires...
Il va falloir que je bosse encore un peu :roll: .
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Jeff »

Ouuppsss, j'ai édité pendant que tu répondais :oops:
Hubert Lambert a écrit :Malheureusement j'y suis moi-même parvenu
Je vais tester cela (peut-être pas cet aprem') sur mes différents systèmes, puis te ferai le retour.
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc][OXT] COUNTSTYLE() - fonction pour compter les sty

Message par Hubert Lambert »

Jeff a écrit :N'aurais-tu pas intérêt à intégrer "l'aide", notamment sur le troisième paramètre, lors de l'affichage dans le gestionnaire (j'ignore la complexité de la chose).
Je comptais bien le faire... mais j'avoue quand tout le reste aurait été en ordre :wink: .
Même chose pour les numéros de version : je fais trop d'essais pour que cela ait un sens à ce stade. Ne t'étonne pas de certaines incohérences !
Jeff a écrit :Je vais tester cela (peut-être pas cet aprem') sur mes différents systèmes, puis te ferai le retour
Merci déjà :) .
J'ai modifié à nouveau la version dans le premier message.
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)
Verrouillé