Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Formattage graphique sur feuille en vba

Pacalou95

XLDnaute Nouveau
Bonjour
Au sein d'une boucle VBA, je crée un graphique correspondant à un tableau de valeurs mis à jour par la boucle dans une feuille "Selection". Ce grahique est du type radar, avec plusieurs séries de données correctement créées. Je souhaite mettre ce graphe dans une feuille "Trame" à un emplacement précis et une taille précise. La feuille Trame contient déjà des informations dans d'autres cellules : elle est ensuite sauvegardée en pdf puis doit être effacée pour le prochain traitement. J'ai enlevé les tous les formattages pour plus de clarté et fait une boucle rudimentaire avec deux passages (Index étant l'index de boucle).
J'ai effectué l'opération manuellement et elle se déroule bien mais le code ci-joint ne veut pas fonctionner. L'enregistreur de Macros ne permet pas de placer le graphique créé sur une feuille de calcul de manière explicite.
Quelqu'un aurait une idée ,
Merci d'avance.
 

Pièces jointes

  • Calcul Test.xlsm
    54.5 KB · Affichages: 8

Pacalou95

XLDnaute Nouveau
Pour être plus calir rapidement, le code de la macro :
VB:
Sub TraceTest()
Dim feuilleData, feuilleTrame As Worksheet
Dim Emplacement As Range
Dim i, Index, NbFiches, NbPoints As Integer
Dim NomFichier As String
    Set feuilleData = ActiveWorkbook.Sheets("Selection")
    Set feuilleTrame = ActiveWorkbook.Sheets("Trame")
    NbFiches = 2                ' nombre de passages dans la boucel
    NbPoints = 8                ' nombre de points par série
For Index = 1 To NbFiches
'---------------------------------------------------------------------------------------------
' Calcul test des données à tracer
    For i = 1 To NbPoints
        feuilleData.Cells(2, i) = i / NbPoints
        feuilleData.Cells(3, i) = Index
    Next i
'---------------------------------------------------------------------------------------------
' intialisation de la feuille de destination
    feuilleTrame.Activate
    feuilleTrame.Cells(1, 4) = "Numéro : "
    feuilleTrame.Cells(1, 5) = Index
'---------------------------------------------------------------------------------------------
' création du graphique
    Charts.Add
    With ActiveChart
        .ChartType = xlRadarMarkers
        .Name = "RadarTest"
        .SetSourceData Source:=Sheets("Selection").Range("A1:H1,A2:H2,A3:H3"), PlotBy:=xlRows
        .FullSeriesCollection(1).Name = "=""année 1"""      ' série 1
        .FullSeriesCollection(2).Name = "=""année 2"""      ' série 2
    End With
'----------------------------------------------------------------------------------------------
' emplacement
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Trame"  ' position du tracé
    feuilleTrame.Activate
    Set Emplacement = Range("A9:H28")       ' emplacement où doit arriver le graphique sur Trame
    With ActiveSheet.ChartObjects(1)
        .Left = Emplacement.Left
        .Top = Emplacement.Top
        .Height = Emplacement.Height
        .Width = Emplacement.Width
    End With
'----------------------------------------------------------------------------------------------
' enregistrement
    NomFichier = "D:\Export\FichierTest" & Index
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=NomFichier & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
'----------------------------------------------------------------------------------------------
' nettoyage
    ActiveChart.Delete
    feuilleTrame.Activate
    Cells.Select
    Selection.Delete Shift:=xlUp

Next Index
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…