placement graphique vba

julienb25

XLDnaute Nouveau
Bonjour,
J'ai un petit problème.
j'ai crée une macro qui me fait un graphique. le problème c'est que cette marcro me place ce graphique au milieu de l'écran moi je voudrais qui le place par rapport a une cellule donné.
je m'explique:
la macro demande de sélectionner la plage de donnée pour faire le graphe (jusque la ca marche parfaitement)
moi je voudrais ensuite que la macro place le graphique en décalage avec la première case (haut, gauche) de ma sélection

par exemple ma plage est H3:I5
je voudrais qui me place le graphique sur la cellule qui se trouve deux lignes au dessus et deux colonnes a gauche c'est à dire sur la cellule "F1"
 

Risleure

XLDnaute Occasionnel
Re : placement graphique vba

Bonjour Julienb25, le Forum

Issu du code d'un fichier de ce Forum (GraphKiSuit.xls)

Voici un bout de code à adapter si ton graphique n'est pas "graphique1" et à mettre dans ta macro. Tu joues ensuiet sur les valeurs d'offset


Shapes("graphique 1").Left = Target.Offset(0, 2).Left
Shapes("graphique 1").Top = Target.Offset(1, 0).Top

A+
 

julienb25

XLDnaute Nouveau
Re : placement graphique vba

Je crois que je n'ai pas été claire dans ma demande je vais réessayé avec un fichier joint et mon code


je voudrais simplement qu'a la fin de cette macro il me place le graphique en décalage par rapport a la cellule "all"
 

Pièces jointes

  • Mensuel1.zip
    22.6 KB · Affichages: 54
  • Mensuel1.zip
    22.6 KB · Affichages: 55
  • Mensuel1.zip
    22.6 KB · Affichages: 52

julienb25

XLDnaute Nouveau
Re : placement graphique vba

voila ce que j'ai essayé

Code:
With ActiveSheet.Shapes(MonGraph)
                .Height = 150
                .Width = 250
                .Top = Feuil1.Range("D5").Top
                .Left = Feuil1.Range("D5").Left
    End With

Ca ne marche pas il me met en mode débogage... mais j'avais déjà essayé une foi et ca ne marchait pas non plus.
 

julienb25

XLDnaute Nouveau
Re : placement graphique vba

voila ce que j'ai essayé

Code:
With ActiveSheet.Shapes(MonGraph)
                .Height = 150
                .Width = 250
                .Top = Range("D5").Top
                .Left = Range("D5").Left
    End With

Ca marche mais moi je veux un decalage par rapport a une cellule et c'est la que ca bloque

préalablement j'ai ca comme code
Code:
Mongraph = Right(ActiveChart.Name, Len(ActiveChart.Name) - InStr(1, ActiveChart.Name, " "))
    l = ligne_all - 8
    c = colone_all - 6

en fait je veux voudrais faire un truc comme ca
Code:
Mongraph = Right(ActiveChart.Name, Len(ActiveChart.Name) - InStr(1, ActiveChart.Name, " "))
    l = ligne_all - 8
    c = colone_all - 6
    With ActiveSheet.Shapes(Mongraph)
                .Height = 150
                .Width = 250
                '.Top = Range(l).Top
                '.Left = Range(c).Left
    End With
 
Dernière édition:

Risleure

XLDnaute Occasionnel
Re : placement graphique vba

Bonjour Julienb25

J'ai repris ton code et j'ai utilisé la commande offset de GraphKiSuit.xls et ça marche. J'ai pas nommé mon graph donc il est indice 1.

Voici le code

Sub test()
With ActiveSheet.Shapes(1)
.Height = 150
.Width = 250
.Top = Range("D5").Offset(2, 0).Top
.Left = Range("D5").Offset(1, 0).Left
End With
End Sub

Sans offset le graph se met en D5 avec offset il se décale par rapport à D5. Tu joues ensuiet sur les valeurs d'offset.

A te lire.
 

Pierrot93

XLDnaute Barbatruc
Re : placement graphique vba

Re

en utilisant tes variables :

Code:
With Sheets("graph")
    .ChartObjects(1).Top = .Cells(ligne_all, colone_all).Top
    .ChartObjects(1).Left = .Cells(ligne_all, colone_all).Left
End With

attention au numéro d'index de l'objet "ChartObject", il semblerait que dans ton fichier il ne correspond pas vraiment à ton graph... A tester sur un nouveau classeur.

bon après midi
@+
 

julienb25

XLDnaute Nouveau
Re : placement graphique vba

j'essai de comprendre le code par ce que ça ne fait rien chez moi
Code:
With Sheets("graph")
==> avec la feuille "graph"
Code:
.ChartObjects(1).Top =
==> le 1 de chartobjects indique que c'est le dernier utilisé?
Code:
.Cells(ligne_all, colone_all).Top
==> dessus de la cellule(ligne,colone)

j'ai l'impression qui ne choisi pas la bon graphique... enfin je sais pas

et autre chose ce n'est pas cells(ligne_all,colone_all) mais cells(l,c) que je voudrais
cf
Code:
 l = ligne_all - 8
    c = colone_all - 6
 

Pierrot93

XLDnaute Barbatruc
Re : placement graphique vba

Re

non l'indes 1 signifie que c'est le premier de la collection des "chartobjets", et dans le classeur que tu as déposé en pièce jointe, le 1 correspond à un graph pratiquement invisible. D'ailleur sur ce même classeur, ton graph doit être le 384ème... C'est pourquoi je te disais d'essayer le code sur un nouveau classeur... Pour tes variables l et c tu peux très bien modifier, cela devrait fonctionner si ces même variables sont correctement initialisées.

@+
 

julienb25

XLDnaute Nouveau
Re : placement graphique vba

Merci a tous pour votre aide j'ai finalement réussi je vous laisse mon code si jamais d'autre en on besoin mais c'est un truc bizarre

Code:
MonGraph = Right(ActiveChart.Name, Len(ActiveChart.Name) - InStr(1, ActiveChart.Name, " "))
  
    l = ligne_all - 4
    c = colone_all - 7
    With ActiveSheet.Shapes(MonGraph)
                .Height = 150
                .Width = 250
                .Top = ActiveSheet.Cells(l, c).Top
                .Left = ActiveSheet.Cells(l, c).Left
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson