Création graphique barres empilées 100% avec VBA Excel 2000, pb avec noms graphique

guainflo

XLDnaute Junior
Bonjour,

Je veux créer un graphique barres empilées 100% grâce à VBA sur la feuille 3, à partir de données de la feuille 1, lorsque l'on appuie sur un bouton sur la feuille 2 (c'est un prg test, il sera inséré dans un autre programme).

Pour avoir les lignes de code, j'ai créé le graphe en enregistrant une macro.

Mon 1er problème est dans la reconnaissance par excel du nom du graphe nouvellement créé ("l'élément portant ce nom est introuvable"):

Code:
ActiveSheet.Shapes("Graphique 1").ScaleWidth 1.46, msoFalse, _
        msoScaleFromBottomRight

Le mieux je pense est de donner un nom au graphe juste après l'avoir créé, pour pouvoir le désigner après, j'ai essayé plusieurs choses mais sa marche pas.

Un autre problème est qu'à chaque appui sur le bouton, il faut supprimer l'ancien graphe et le recréer (une mise à jour du graphe n'est pas bon car si l'utilisateur supprime le graphe, le prg marche plus, à part si on ajoute un test pour savoir si le graphe existe).

Si vous pouvez m'aider, vous trouverez en pièce jointe le prg.

Dans le module, il s'agit de la macro enregistrée, et sur la feuille 2 le programme.
Mon graphe ne doit contenir aucune légende et axes, ..., seulement les valeurs en %, et je ne veux pas de fenêtre autour du graphe.
Merci par avance
 

Pièces jointes

  • Essai_graphe.zip
    17.1 KB · Affichages: 101

guainflo

XLDnaute Junior
Re : Création graphique barres empilées 100% avec VBA Excel 2000, pb avec noms graphi

Bonjour,

Je souhaite en plus supprimer le cadre au tour du graphe, en enregistrant une macro, il me met ces lignes de codes :

Code:
 Sheets("Feuil3").DrawingObjects("Graphique 1").RoundedCorners = False
 Sheets("Feuil3").DrawingObjects("Graphique 1").Shadow = False
 ActiveWindow.Visible = False

J'ai une erreur quand j'ajoute ces lignes à mon prg (Je crée le graphe sur une page qui s'appelle Résultat à partir d'une macro qui ce trouve dans le module 1) :

Code:
    Sheets("Résultat").DrawingObjects.Delete
    Charts.Add
    ActiveChart.ChartType = xlBarStacked100
    ActiveChart.SetSourceData Source:=Sheets("Résultat").Range("Q9,Q11,Q13"), PlotBy:=xlRows
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Résultat"
    ActiveChart.HasLegend = False
    ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
    With ActiveChart
        .HasAxis(xlCategory, xlPrimary) = False
        .HasAxis(xlValue, xlPrimary) = False
        .Axes(xlCategory).HasMajorGridlines = False
        .Axes(xlCategory).HasMinorGridlines = False
        .Axes(xlValue).HasMajorGridlines = False
        .Axes(xlValue).HasMinorGridlines = False0
    End With
    ActiveSheet.Shapes(1).ScaleHeight 0.5, msoFalse, msoScaleFromBottomRight
    ActiveSheet.Shapes(1).ScaleHeight 0.5, msoFalse, msoScaleFromTopLeft
    ActiveChart.SeriesCollection(1).Select
    With ActiveChart.ChartGroups(1)
        .Overlap = 100
        .GapWidth = 0
        .HasSeriesLines = False
    End With
    ActiveChart.SeriesCollection(1).Points(1).Select
    With Selection.Interior
        .ColorIndex = 10
        .Pattern = xlSolid
    End With
    ActiveChart.SeriesCollection(2).Select
    With Selection.Interior
        .ColorIndex = 45
        .Pattern = xlSolid
    End With
    ActiveChart.SeriesCollection(3).Select
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
    ActiveChart.ApplyDataLabels AutoText:=True
    ActiveChart.ChartArea.Font.Size = 11
    ActiveSheet.ChartObjects(1).Left = Range("B14").Left
    ActiveSheet.ChartObjects(1).Top = Range("B14").Top
    ActiveWindow.Visible = False
 

Discussions similaires

Réponses
6
Affichages
305

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign