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
Mes différentes recherches sur ce forum ainsi que sur les moteurs de recherche n'ont rien trouvé
Merci pour votre aide.
