Macro : Mise en forme d'un graphique

Feitan

XLDnaute Nouveau
Bonjour à tous,

Voilà mon souci, j'espère pouvoir trouver une solution :)

En fait, grâce à l'enregistreur de Macro, je créé un graphique à partir de données, jusque là pas de problème.

Sauf que, une fois le graphique créé, j'aimerai que la macro mette en forme le tableau (en terme de dimension et de positionnement sur la feuille).

Or, cela ne marche pas. Je pense savoir d'ou vient le problème, car la Macro enregistre le nom du graphique précédemment créer, et donc lorsque j'en créé un nouveau (après avoir effacé le graphique précédent), et bien la mise en forme ne marche pas.

Ma question est donc : Comment faire pour que la mise en forme du graphique se fasse avec la macro.
Voici le moment ou le script merdouille, je pense que c'est à cause de "Graphique 15", à la place, je voudrai le remplacer par "le grahique qui vient d'être créé".

Merci à vous pour votre aide.

ActiveChart.HasLegend = False
ActiveSheet.Shapes("Graphique 15").ScaleWidth 0.71, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Graphique 15").ScaleHeight 0.61, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Graphique 15").ScaleWidth 0.85, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Graphique 15").IncrementLeft 114#
ActiveSheet.Shapes("Graphique 15").IncrementTop -34.5
 

Feitan

XLDnaute Nouveau
Re : Macro : Mise en forme d'un graphique

Re-Bonjour,

J'ai finalement trouvé, voici la réponse pour ceux que ça pourrait intéresser.

Il faut remplacer "Graphique 15" par la ligne :
ActiveSheet.Shapes(ActiveSheet.Shapes.count)

Bonne journée à tous !

J'en profite pour vous poser une autre question :

J'aimerai en fait qu'après avoir été redimmensionné, mon graphique se place en face de certaines données. Or, le contenu des cellules de la feuille changent (elle peuvent accueillir un contenu plus ou moins important), du coup, comment faire pour que, quoiqu'il arrive, une fois redimmensionné, mon graphique se mette entre les lignes G41 et G47 ? Est-ce possible ?

Merci beaucoup.
 
Dernière édition:

mécano41

XLDnaute Accro
Re : Macro : Mise en forme d'un graphique

Bonjour,

Pour le positionnement en XY du graphe, j'avais fait quelque chose comme ceci ; il faut calculer la positions X, en points, en additionnant les largeurs des colonnes précédant le graphe et la position Y, en points, en additionnant les hauteurs des lignes précédant le graphe :

Code:
    ' ----- Calcul position du graphe
    
    For Cpt = 0 To NbColonnesAvantGraphe-1
        DecalHoriz = DecalHoriz + Range("A1").Offset(0, Cpt).ColumnWidth
    Next Cpt
    PosHor = DecalHoriz * 5.71 + n
    For Cpt = 0 To NbLignesAvantGraphe-1
        DecalVert = DecalVert + Range("A1").Offset(Cpt, 0).RowHeight
    Next Cpt
    PosVert = DecalVert + m

    ' ----- Création du graphe
    With .ChartObjects.Add(Left:=PosHor, Top:=PosVert, Width:=200, Height:=100)

etc...



Avec n ou m = décalage supplémentaire, si nécessaire, entre la colonne ou la ligne précédant le graphe et le côté du graphe (en Nb de points).
La valeur 5,71 fait la conversion largeur colonne en Nb caractères / largeur colonne en Nb de points)

à essayer, car je n'ai pas revérifié...

NOTA : Pour colonne et ligne avant graphe, le mieux est de nommer un cellule et de rechercher la position (ligne et colonne) de la cellule de ce nom, ainsi, s'il y a des modifications, elles sont automatiquement prises en compte...

Cordialement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine