excel vba : Positionnement d'un graphique (urgent)

N

Nkubi

Guest
Bonjour,
Mon problème est que dans une procédure je crée deux graphiques et bien sûr ils se mettent l'un au dessus de l'autre.

Donc j'aimerais savoir comment les mettre l'un à côté de l'autres (en les mettant tous les deux à la même taille) et avec le premier tout à droite.

Comme cette procédure je la rappelle ensuite je voulais savoir comment placer les deux prochains graphiques (en les mettant l'un à côté de l'autre) juste en dessous des grafs existant ????
le tout en vba évidemment .

Merci d'avance.
 
N

Nkubi

Guest
Tu pourrais me donner un bout de code pour voire comment ça marche s'il te plait????

Et est-ce qu'en faisant top par exemple et que j'ai déjà un graphique, est-ce qu'il sera mis en dessous de l'autre???

J'ai une autre question aussi, comment donner un nom à un graphique??? (j'ai des erreurs de charts quand j'essaye)


Merci
 
P

petchy

Guest
bonjour le forum

NKubi,pour donné un nom à ton graph:
appui sur la touche CTRL
click sur ton graph
dans la zone Nom (en haut à gauche),tu nome ton graph
et tu fait ENTRER
voila ton graph est nomé
@ plus
petchy
 
N

Nkubi

Guest
je viens de taper ça dans mon code
Charts.Add
ActiveChart.name = "graph_temps_" & moisouhaite & "_" & ansouhaite

mais apparrement ça ne marche pas alors je sais pas.
Si j'utilise l'objet shape je dois écrire quoi??? (désolé mais je suis débutant en vba)
 
N

Nkubi

Guest
Petchy tu vas rire mais même en faisant comme tu m'as dit je n'arrive pas à renommer mon graphe. J'appuie sur CTRL et je clicke sur mon graph et quand je veux saisir le nom je ne peux pas, je commence vraiment à en avoir marre de ces graphiques ;-) .
 
M

Mytå

Guest
Salut le Forum

Une idée de base a toi de pousuivre

Positionner 4 graphiques sur une Feuille

Sub Position_Graphique()

With Worksheets("Feuil1")

.ChartObjects(1).Top = .Rows(1).Top
.ChartObjects(1).Left = .Columns(1).Left
.ChartObjects(1).Height = 165.75
.ChartObjects(1).Width = 300

.ChartObjects(2).Top = .Rows(1).Top
.ChartObjects(2).Left = .Columns(6).Left
.ChartObjects(2).Height = 165.75
.ChartObjects(2).Width = 300

.ChartObjects(3).Top = .Rows(14).Top
.ChartObjects(3).Left = .Columns(1).Left
.ChartObjects(3).Height = 165.75
.ChartObjects(3).Width = 300

.ChartObjects(4).Top = .Rows(14).Top
.ChartObjects(4).Left = .Columns(6).Left
.ChartObjects(4).Height = 165.75
.ChartObjects(4).Width = 300

End With
End Sub

Mytå
 
N

Nkubi

Guest
Petite question Mytå, quand tu mets l'indice 1,2,3 ou 4 dans .ChartObjects(4) est-ce que ça correspond à leur numéro de graphique (ex 1 pour Graphique1) ou est-ce que c'est leur numéro de création sur la feuille????




Petchy maintenant j'ai réussi à changer de nom en me servant de la souris ;-), en fait c'était parce que je devais clicker plusieurs fois dessus pour que ça marcha.
Mais maintenant je veux le faire en vba, mais le problème c'est que j'ai essayé un tas de trucs mais rien ne marche, je commence à en avoir vraiment marre.
Donc si quelqu'un pouvait aider un apprenti en détresse....

Merci.
 
N

Nkubi

Guest
Mytå ta fonction avait l'air de faire ce que je voulais et donc je l'ai légèrement modifié et j'ai obtenu ça:

Sub Position_Graphique(x As Integer)
'x = nombre de graf dont les nouveaux à placer au bon endroit
Dim ligne As Integer
Dim tabl As Integer
tabl = x - 1
ligne = ((x - 2) / 2) * 27 + 1

With Worksheets("Feuil1")

.ChartObjects(tabl).Top = .Rows(ligne).Top
.ChartObjects(tabl).Left = .Columns(ligne).Left
.ChartObjects(tabl).Height = 345
.ChartObjects(tabl).Width = 380

.ChartObjects(x).Top = .Rows(1).Top
.ChartObjects(x).Left = .Columns(8).Left
.ChartObjects(x).Height = 345
.ChartObjects(x).Width = 380

End With
End Sub


Mais le problème c'est que j'ai un messge d'erreur :"Impossible de lire ChartObjects de la classe Worksheets".
Je pense que ça doit venir du type de tabl et ligne mais j'ai essayé plusieurs type ça ne marchait pas non plus, j'en déduis que c'est ma façon de le concaténer ou un truc comme ça.
Donc si quelqu'un pouvait me dire où j'ai fais une erreur et comment la corriger ce serait sympa.

Merci.
 
M

Mytå

Guest
Re le Forum

Nkubi voila ta macro modifier

Elle gere automatiquement le nombre de Graphiques a repositionner
(sur 2 colonnes)

Sub Positionner_Graphique()

Dim Colonne As Byte
Dim Ligne As Byte
Dim Nbre As Byte
Dim Nbre_Colonne As Byte
Dim Nbre_Ligne As Byte

Nbre_Colonne = 5
Nbre_Ligne = 13

With Worksheets("Graphiques")

For Nbre = 1 To .ChartObjects().Count

Ligne = Int((Nbre - 1) / 2) * Nbre_Ligne + 1
Colonne = ((Nbre - 1) Mod 2) * Nbre_Colonne + 1

.ChartObjects(Nbre).Top = .Rows(Ligne).Top
.ChartObjects(Nbre).Left = .Columns(Colonne).Left
.ChartObjects(Nbre).Height = Nbre_Ligne * 12.75
.ChartObjects(Nbre).Width = Nbre_Colonne * 60

Next Nbre

End With

End Sub

Mytå
 
N

Nkubi

Guest
Merci Mytå, c'est sympa.

J'ai une autre question maintenant pas très en rapport avec le reste.

Alors je voudrais créer des graphiques et les mettre directement dans un autre classeu, dans une feuille donnée. Mais je ne sais pas si c'est possible dasn les options de créations du graphiques (le tout en vba évidemment).

Si c'est pas possible, j'ai essayé de couper ces graphiques et de les mettres où je voulais, mais le problème c'est qu'apparemment soit il ne sont pas collé en tant que graphique (mais en tant qu'image) soit leur nom change et donc je n'arrive pas à en faire ce que je veux après.

Quelqu'un pour m'aider????

Merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 275
Messages
2 086 707
Membres
103 377
dernier inscrit
fredy45