placement graphique vba

  • Initiateur de la discussion Initiateur de la discussion julienb25
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

julienb25

Guest
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"
 
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+
 
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

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.
 
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 modification par un modérateur:
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.
 
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
@+
 
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
 
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.

@+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
425
Réponses
0
Affichages
189
Réponses
1
Affichages
649
Réponses
7
Affichages
577
Retour