[Résolu][Calc] disposition d'une table dynamique

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][Calc] disposition d'une table dynamique

Messagepar Grilladou » 06 Mai 2021 03:50


La modération vous a écrit: Suppression du terme Problème qui n'est pas explicite de votre question


Bonjour à tous
Je cherche à créer une table dynamique qui fait un décompte (COUNT) et une moyenne (AVERAGE) sur 2 données différentes. Je me suis largement inspiré de codes trouvés sur ce forum, mais je bloque sur la présentation de la table dynamique. Dans le fichier exemple, il y a la feuille des données et la feuille de la table dynamique souhaitée. La macro crée une feuille "TCD obtenu". Concrètement, la macro affiche les champs de données en ligne dans la même colonne [C en l'occurrence] alors que je voudrais ces champs de données en colonne (de B à D).
De plus y a un truc qui m'échappe. La ligne
Code : Tout sélectionner   AgrandirRéduire
Champs(2).SetPropertyValue("Function", com.sun.star.sheet.GeneralFunction.COUNT)

renvoie un faux résultat car elle fait une somme (SUM) et non un décompte (COUNT). J'ai du louper qqchose malgré ma consultation de la page https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/GeneralFunction.html
Si qqun à une idée, je suis preneur.
Un grand merci par avance
(la mise en forme des cellules est manuelle, je ferai par macro quand ce problème sera résolu)
Pièces jointes
Exemple_TCD.ods
(17.23 Kio) Téléchargé 15 fois
Dernière édition par Grilladou le 08 Mai 2021 05:13, édité 1 fois.
LibreOffice 6.4 - Windows 10 x64
Grilladou
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 07 Mars 2021 20:47

Re: [Calc] Problème de disposition d'une table dynamique

Messagepar rollmops » 06 Mai 2021 07:35

Bonjour,

Utilise XRay et inspecte ton TCD obtenu.
Tu verras comment il est construit au niveau des DataFields.
OpenOffice 4.1.10 - Windows 7
Avatar de l’utilisateur
rollmops
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 327
Inscrit le : 20 Déc 2017 15:45

Re: [Calc] Problème de disposition d'une table dynamique

Messagepar Grilladou » 06 Mai 2021 21:09

Bonsoir à tous,
A priori, j'ai trouvé la solution (merci Google), je teste et si le résultat est bien conforme je posterai la solution. Ca peut toujours intéresser qq'un.
A cette étape là, je baliserai en "Résolu" (trop tôt pour le goudron et les plumes :D )
LibreOffice 6.4 - Windows 10 x64
Grilladou
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 07 Mars 2021 20:47

Re: [Calc] Problème de disposition d'une table dynamique

Messagepar rollmops » 07 Mai 2021 08:56

Grilladou a écrit:A priori, j'ai trouvé la solution (merci Google)

A priori, tu n'as pas installé XRay :(
OpenOffice 4.1.10 - Windows 7
Avatar de l’utilisateur
rollmops
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 327
Inscrit le : 20 Déc 2017 15:45

[Résolu] [Calc] disposition d'une table dynamique

Messagepar Grilladou » 08 Mai 2021 05:13

A priori, tu n'as pas installé XRay :(


Si, si mais pas simple de trouver un paramètre quand on ne sait pas ce que l'on cherche. Toutefois, j'ai vu que "Orientation integer" pouvait peut-être m'intéresser. Google m'a emmené sur ce forum : Data Pilot Tables - setting the 'Position' property https://forum-test.openoffice.org/en/forum/viewtopic.php?f=45&t=56087 et de rebonds en rebonds, je suis revenu à la maison, puisque Piaf a indiqué la solution ici même https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=46965

Pour résumer, il faut ajouter
Code : Tout sélectionner   AgrandirRéduire
oField = oTableDescr.getDataPilotFields().getByName("Données")
oField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.COLUMN

pour ajouter une présentation en colonne et
Code : Tout sélectionner   AgrandirRéduire
oField = oTableDescr.getDataPilotFields().getByName("Données")
oField.Orientation = com.sun.star.sheet.DataPilotFieldOrientation.ROW

pour une présentation en ligne.

Testé et approuvé. Un grand merci Piaf pour ta solution (cette fois, je passe en résolu).
Bonne journée
LibreOffice 6.4 - Windows 10 x64
Grilladou
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 07 Mars 2021 20:47


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)