Bonjour,
Dans une feuille Calc, j'ai un diagramme qui a une mise en forme bien précise. Ce diagramme pointe vers un tableau dont le nombre de lignes augmente régulièrement. Je veux créer une macro qui mête à jour un diagramme lorsque l'utilisateur a fini sa saisie et qu'il clique sur un bouton, j'ai essayé un certains nombre de choses qui ne fonctionnent pas. Pour finir je pense qu'il faut créer à chaque fois un nouveau diagramme et lui appliquer les propriétés du diagramme pré-éxistant.

J'ai trouvé dans la documentation Sun la méthode pour créer un diagramme.
Mais je bloque sur la façon dont on peut récupérer les propriétés d'un diagramme. L'enregistreur de macro a un fonctionnement très aléatoire lorsqu'il s'agit de travailler sur des diagrammes.

Est-ce qu'il existe un moyen de récupérer dans un tableau les propiriétés du diagramme ou du embededObject?:

Sub S_CreerNewDiag()
        Dim Doc As Object
        Dim Charts As Object
        Dim oChart0 as Object
        Dim oChart1 as Object
        Dim LigneDeb as Long
        Dim ColonneDeb as Long
        Dim Rect As New com.sun.star.awt.Rectangle
        Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
        Dim oZone as Object
        Dim oZoneAdr As Object
        Dim oFeuille as Object
        Dim sNomChart as String
        Dim varBool
        
         On Error GoTo Erreurs
        
        Doc = StarDesktop.CurrentComponent
        oFeuille = Doc.sheets.getbyname("Feuille1")
        Charts = Doc.Sheets(0).Charts
                ligneDeb = 1
                ColonneDeb = 0
        Chart0=Charts(0)
        sNomChart = Chart0.name
        
        
        if sNomChart = "MyChart" then
                sNomChart ="MyChart1"
        Else
                sNomChart ="MyChart"
        End if
        
                NbLignes = F_LongueurTable("Feuille1", LigneDeb, ColonneDeb)
'on définit la zone de données utilisée pour actualiser le diagramme : cette méthode ne fonctionne pas ???
                oZone = oFeuille.getCellRangeByName("A1:C" & 1 + NbLignes)
                oZoneAdr = oZone.getRangeAddress()
        
        Rect.X = 8000
        Rect.Y = 1000
        Rect.Width = 10000
        Rect.Height = 7000
        
        RangeAddress(0).Sheet = 0
        RangeAddress(0).StartColumn = 0
        RangeAddress(0).StartRow = 0
        RangeAddress(0).EndColumn = 2
        RangeAddress(0).EndRow = 1 + NbLignes -1
        
        Charts.addNewByName(sNomChart, Rect, RangeAddress(), True, True)
        'on récupère le diagramme que l'on vient de créer
        Chart1=Charts(1)
        'on applique les propriétés du diagramme original au nouveau diagramme

        Chart1.HasColumnHeaders =Chart0.HasColumnHeaders
        'Chart1.HasMainTitle =Chart0.HasMainTitle
        'Chart1.Title =Chart0.Title
        'Chart1.HasSubTitle =Chart0.HasSubTitle
        'Chart1.SubTitle =Chart0.SubTitle
        'Chart1.HasLegend =Chart0.HasLegend
        
'xray Chart0
'Chart1.embededObject.DataSourceLabelsInFirstColumn = Chart0.embededObject.DataSourceLabelsInFirstColumn 'ne fonctionne pas 'Chart1.embededObject.DataSourceLabelsInFirstRow =Chart0.embededObject.DataSourceLabelsInFirstRow 'ne fonctionne pas

        
            Exit Sub
Erreurs:
        erreur_num=err()
        erreur_txt=error(erreur_num)
        erreur_ligne = Erl()
MsgBox(vl_projet & " :" & Chr(10) & Chr(10) & "erreur n° " + erreur_num + " à la ligne " + erreur_ligne + chr(13) + erreur_txt, 1 + 16, " S_CreerNewDiag")

End Sub


Merci d'avance

LAurence

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à