[Résolu] [Calc] Table dynamique en pourcentage du total des valeurs

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 !
Aalex
Fraîchement OOthentifié
Messages : 2
Inscription : 05 juil. 2024 14:55

[Résolu] [Calc] Table dynamique en pourcentage du total des valeurs

Message par Aalex »

Bonjour tout le monde,

Je viens demander de l'aide pour un problème de création de table dynamique.

En effet, je n'arrive pas à trouver dans les propriétés et méthodes des objets celle qui permet de mettre en forme ma table en pourcentage.
A partir de la feuille (sans macro) j'obtient cette présentation de la façon suivante:
- Je clic avec le bouton droit sur la table puis je lance les "Propriétés..."
- Je fait un double-clic sur le champ de données et je choisi "% du total" dans "Valeur affichée"
(J'ai mis des copies écran dans le fichier joint)

Voici le code que j'utilise pour créer la table:

Code : Tout sélectionner

Sub tp
	Dim oDoc As Object, oSheet As Object, oZone As Object, oTables As Object
	Dim oDesc As Object, oChamps As Object, oChamp As Object
	Dim LayoutInfo as New com.sun.star.sheet.DataPilotFieldLayoutInfo

	oDoc = ThisComponent
	oSheet = oDoc.Sheets.getByIndex(0)
	oZone = oSheet.getCellRangeByPosition(0, 0, 1, 50)
	oTables = oSheet.getDataPilotTables()
	oDesc = oTables.createDataPilotDescriptor()
	oDesc.setSourceRange(oZone.RangeAddress)
	oChamps = oDesc.getDataPilotFields()
	
	' Ligne :
	oChamp = oChamps.getByIndex(1)
	oChamp.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.ROW)
	oChamp.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.NONE)
		
	' Données :
	oChamp = oChamps.getByIndex(1)
	oChamp.setPropertyValue("Orientation", com.sun.star.sheet.DataPilotFieldOrientation.DATA)
	oChamp.setPropertyValue("Function", com.sun.star.sheet.GeneralFunction.COUNT)
		LayoutInfo.layoutmode=0
		LayoutInfo.AddEmptyLines=False
		oChamp.setPropertyValue("LayoutInfo",LayoutInfo())
	
	' Table de pilote
	oCellule = oSheet.getCellRangeByName("D1")
	If oTables.hasByName("Test") then oTables.removeByName("Test")
	oTables.insertNewByName("Test", oSheet.getCellRangeByName("D1").CellAddress, oDesc)
End Sub
Je vous joint également un fichier modèle.

Mes différentes recherches sur ce forum ainsi que sur les moteurs de recherche n'ont rien trouvé

Merci pour votre aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Aalex le 06 juil. 2024 23:28, modifié 1 fois.
LibreOffice 7.3.5.2 (x64)
Windows 10 64bits
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26242
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Table dynamique en pourcentage du total des valeurs

Message par Dude »

Salut,

Tu installes zBasic et tu fais ça en quelques lignes :

Code : Tout sélectionner

Sub Main
GlobalScope.BasicLibraries.loadLibrary ("zBasic")
	zTCD.Supprime("Essai")
	oTCD = zTCD.Demarre("Essai", "Feuille1", "A1:B51")
	zTCD.Parametre(oTCD, "Bouton_filtre", 1)
	zTCD.Parametre(oTCD, "rappel_éléments", 0)
	
	zTCD.Champ(oTCD, "ligne", 2, "aucun")
	zTCD.Champ(oTCD, "donnee", 2, "nombre", "pourcent_resultat")
	zTCD.Execute(oTCD, "Feuille1", "G1")
End Sub
demo.gif
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Aalex
Fraîchement OOthentifié
Messages : 2
Inscription : 05 juil. 2024 14:55

Re: [Calc] Table dynamique en pourcentage du total des valeurs

Message par Aalex »

Merci Dude pour ta réponse rapide qui m'amène à la solution. :super:

Effectivement l’extension zBasic est très efficace. Je ne vais pas pouvoir l'utiliser pour le projet en cours car cela représenterait trop de modifications mais elle m'a permis de trouver la propriété qui me manquait (com.sun.star.sheet.DataPilotFieldReference).
Je vais la garder précieusement.

Encore merci pour le temps que tu m'as accordé.
LibreOffice 7.3.5.2 (x64)
Windows 10 64bits