excel - taille d'un graphique
Dernière réponse : dans Programmation
me revoila (je suis c*** voir embetant
... je sais !)
bon, je fais un graphique... jusque là pourquoi pas.
J'ai 2 questions
1/ la taille de ma zone de selection peut varier... Je ne trouve pas encore pourquoi cela ne amrche pas....
2/ je voudrais que agrandir mon graphique.
je m'explique : j'ai fais une page avec une mise en page (logo, date, et autres...) et je voudrais que mon graphique prenne le reste de la place sur ma feuille, pour pouvoir l'imprimer...
J'ai vu, dans l'aide, des instructions, mais elle donne au graphique toute la page...
j'ai essayer de la faire avec l'assistant de création de macro, mais quand je la lance, mon graphe est toujours aussi petit....
voici déja ce que j'ai fais :
je fais mon graphique dans l'onglet "graphe TRG"
mes données sont dans l'onglet "TRG"
la taille de ma selection est indiqué dans la cellule I4 (de l'onglet TRG)
LA première cellule de ma selection est C3
la dernière est dans la colonne E
... je sais !)bon, je fais un graphique... jusque là pourquoi pas.
J'ai 2 questions
1/ la taille de ma zone de selection peut varier... Je ne trouve pas encore pourquoi cela ne amrche pas....
2/ je voudrais que agrandir mon graphique.
je m'explique : j'ai fais une page avec une mise en page (logo, date, et autres...) et je voudrais que mon graphique prenne le reste de la place sur ma feuille, pour pouvoir l'imprimer...
J'ai vu, dans l'aide, des instructions, mais elle donne au graphique toute la page...
j'ai essayer de la faire avec l'assistant de création de macro, mais quand je la lance, mon graphe est toujours aussi petit....
voici déja ce que j'ai fais :
je fais mon graphique dans l'onglet "graphe TRG"
mes données sont dans l'onglet "TRG"
la taille de ma selection est indiqué dans la cellule I4 (de l'onglet TRG)
LA première cellule de ma selection est C3
la dernière est dans la colonne E
Sub graphe()
Dim nouveau_graphique As Chart
Dim nbre As Integer ' n° de ligne de fin de selection
Dim per As Integer
Dim srce_d As Range
Dim zone_select As Range
per = Worksheets("TRG").Range("I4").Value+2
'// définition de la zone pour le graph
Set srce_d = Worksheets("TRG").Range("C4").End(xlDown)
If srce_d.row > per Then ' juste au cas ou il y aurais moins de lignes
nbre = per
Else
nbre = srce_d.row
End If
Set zone_select = Worksheets("TRG").Range(Cells("C4"), Cells(nbre, 5))
' // supprime les raphique existant sur la page
Worksheets("graphe TRG").ChartObjects.Delete
' // on s'occupe du graphe
Set nouveau_graphique = Charts.Add
nouveau_graphique.Name = "graphique"
nouveau_graphique.ChartType = xlLineMarkers
nouveau_graphique.SetSourceData Source:=zone_select, PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphe TRG"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Worksheets("TRG").Range("A4").Text
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.ChartSize = xlFitToPage
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "dd - mmm"
End Sub
Autres pages sur : excel taille graphique
Lassé par la pub ? Créez un compte
Je veux et j'exige que tu me vire tous les ActiveMachin, et les Select/Selection. C'est source d'erreur et consommateur de ressources.
(...zen, coocool, exomil...)
Lignes 13, 14 et 15. Oh, quelqu'un d'intelligent.
Ligne 19. Attention, tu ne précises pas l'onglet pour tes deux Cells ! En plus, Cells n'accepte pas une adresse, mais deux coordonnées. C'est là qu'est ton erreur
Ligne 30
cf. exigences
Ligne 31 With.... Ben tant qu'à faire, mets le dès la ligne 26 si tu es fainéant à ce point (mais non, je sais bien que c'est un copier/coller de l'enregistreur de macros
)
Lignes 38/39
cf. exigences
(...zen, coocool, exomil...)
Lignes 13, 14 et 15. Oh, quelqu'un d'intelligent.
Ligne 19. Attention, tu ne précises pas l'onglet pour tes deux Cells ! En plus, Cells n'accepte pas une adresse, mais deux coordonnées. C'est là qu'est ton erreur
Set zone_select = Range(Worksheets("TRG" ).Range("C4" ), Worksheets("TRG" ).Cells(nbre, 5))
Ligne 30
cf. exigencesLigne 31 With.... Ben tant qu'à faire, mets le dès la ligne 26 si tu es fainéant à ce point (mais non, je sais bien que c'est un copier/coller de l'enregistreur de macros
)Lignes 38/39
cf. exigences
je reprends seulement les lignes 19 à 41 :
mais je suis désolé... je ne te suis pas trop pour la suite...
cf. exigences
Ligne 31 With.... Ben tant qu'à faire, mets le dès la ligne 26 si tu es fainéant à ce point (mais non, je sais bien que c'est un copier/coller de l'enregistreur de macros
)
Lignes 38/39
cf. exigences
Set zone_select = Range(Worksheets("TRG").Range("C4"), Worksheets("TRG").Cells(nbre, 4))
' // supprime les raphique existant sur la page
Worksheets("graphe TRG").ChartObjects.Delete
'// mise en place du graphe
With Charts.Add
.Name = "graphique"
.ChartType = xlLineMarkers
.SetSourceData Source:=zone_select, PlotBy:= _
xlColumns
End With
With ActiveChart
.Location Where:=xlLocationAsObject, Name:="graphe TRG"
.HasTitle = True
.ChartTitle.Characters.Text = Worksheets("TRG").Range("A4").Text
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.Axes(xlCategory).TickLabels.NumberFormat = "dd - mmm"
End With
End Sub
mais je suis désolé... je ne te suis pas trop pour la suite...
Citation :
Ligne 30
cf. exigencesLigne 31 With.... Ben tant qu'à faire, mets le dès la ligne 26 si tu es fainéant à ce point (mais non, je sais bien que c'est un copier/coller de l'enregistreur de macros
)Lignes 38/39
cf. exigences
Mes exigences : Citation :
Je veux et j'exige que tu me vire tous les ActiveMachin, et les Select/Selection. C'est source d'erreur et consommateur de ressources. Donc pas d'ActiveChart !!!!
Qu'est-ce que ActiveChart ? C'est le graphique actif. Et pourquoi serait-il actif ou pas ? Comme je n'en sais rien, je ne travaille pas sur un truc actif mais sur un objet correstement désigné : par son nom, son numéro, par une variable, par ce qu'il y a dans un With, etc.
Code idiot parce qu'on y mélange tout :
Set nouveau_graphique = Charts.Add
nouveau_graphique.Name = "graphique"
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphe TRG"
Code intelligent :
Set nouveau_graphique = Charts.Add
nouveau_graphique.Name = "graphique"
nouveau_graphique.Location Where:=xlLocationAsObject, Name:="graphe TRG"
En condensé, par ce qu'on est fainéant :
With Charts.Add
.Name = "graphique"
.Location Where:=xlLocationAsObject, Name:="graphe TRG"
End With
Comprends-tu ? (Dis moi oui
)
okok, je pense avoir compris...
donc mon code deviendrais (pour le graphe) :
il (excel) n'aime toujours pas la ligne 8.
Et sinon, peut t'on lui donner une localisation plus précise (ligne 7), que seulement l'onglet ? Par exemple, en dessous de la ligne n ou alors dans une plage de donnée prédéfinie ?
une dernière question : si la valeur est False, est on obligé de le mettre ? Y a-t-il une valeur par defaut ?
donc mon code deviendrais (pour le graphe) :
'// mise en place du graphe
With Charts.Add
.Name = "graphique"
.ChartType = xlLineMarkers
.SetSourceData Source:=zone_select, PlotBy:= xlColumns
.Location Where:=xlLocationAsObject, Name:="graphe TRG"
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.Axes(xlCategory).TickLabels.NumberFormat = "dd - mmm"
End With
il (excel) n'aime toujours pas la ligne 8.
Et sinon, peut t'on lui donner une localisation plus précise (ligne 7), que seulement l'onglet ? Par exemple, en dessous de la ligne n ou alors dans une plage de donnée prédéfinie ?
une dernière question : si la valeur est False, est on obligé de le mettre ? Y a-t-il une valeur par defaut ?
Ah oui, tiens. En fait, la ligne 6 transforme ton Chart en ChartObject. et l'objet nommé "graphique" disparaît. Un nouvel objet est créé. Et on n'a plus la main dessus
Soluces :
Faire tout ce qu'on peut sur le Chart tant qu'on l'a :
Récupérer l'objet ChartObject avec ça :
Ne pas créer un Chart, mais directement un ChartObject :
Pour ce qui est de la localisation, tu veux dire l'emplacement sur la page ? Utilise les propriétés Left, Top, etc de l'objet ChartObject.
Pour ta dernière question, Teste par toi-même + RTFM.
L'aide d'Excel te dira si un paramètre est obligatoire ou pas et dans ce dernier cas, quelle est la valeur par défaut.
Soluces :
With Charts.Add .Name = "graphique" .ChartType = xlLineMarkers .SetSourceData Source:=zone_select, PlotBy:= xlColumns .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False .Axes(xlCategory).TickLabels.NumberFormat = "dd - mmm" .Location Where:=xlLocationAsObject, Name:="graphe TRG" End With
ChartObjects(ChartObjects.Count)
Set niou_tchart = WorkSheets("graphe TRG").ChartObjects.Add
Pour ce qui est de la localisation, tu veux dire l'emplacement sur la page ? Utilise les propriétés Left, Top, etc de l'objet ChartObject.
Pour ta dernière question, Teste par toi-même + RTFM.
L'aide d'Excel te dira si un paramètre est obligatoire ou pas et dans ce dernier cas, quelle est la valeur par défaut.
ok, merci... tout marche
pour info : pour déplacer un objet (ici le graphe)
d'après l'aide, on pourrais faire :
mais ce dernier ne fonctionne pas... je ne sais pas trop....
pour info : pour déplacer un objet (ici le graphe)
With Worksheets("graphe TRG").ChartObjects(1)
.Left = 20 ' en pixel
.Top = 210
End With
d'après l'aide, on pourrais faire :
With Worksheets("graphe TRG").ChartObjects(1)
' aligne le coté gauche du graphe avec la bordure droite de la 1ère colonne
.Left = .columns(1).right
' aligne le haut du graphe avec le haut de la 15ème ligne
.Top = .rows(15).Top
End With
mais ce dernier ne fonctionne pas... je ne sais pas trop....
Encore plus fort dans le graphique : les courbes de tendance.. c'est jolie, mais je m'en sort pas (pour respecter les exigences de ZEB)
puis j'appelle le programme moyenne :
j'ai essayé de simplifier, mais je m'embrouille pas mal !!
je sais, il reste un select... mais euh... ben je sais pas !! c la le probleme !!
et mes lignes 12, 13, 14 ne font rien !! (le programme marche.. mais il saute des lignes !!)
=> il prend la 1ere courbe et pas la courbe tendance, j'ai essayer en mettant "2" ou "evolution" à la place de "1" dans SerieCollection("..")
en plus, il me fait le graph sur un autre onglet !! bref, je suis pas encore au point !!
With Charts.Add .Name = "graphique2" .ChartType = xlLineMarkers .SetSourceData source:=zone_select, PlotBy:=xlColumns .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False .Axes(xlCategory).TickLabels.NumberFormat = "dd - mmm" .Location Where:=xlLocationAsObject, Name:="graphe TRG" End With With Worksheets("graphe TRG").ChartObjects(2) .Left = 20 .Top = 470 End With
puis j'appelle le programme moyenne :
ActiveSheet.ChartObjects(2).Activate ActiveChart.SeriesCollection(1).Select ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlLinear, Forward:=1, _ Backward:=0, DisplayEquation:=False, DisplayRSquared:=False, Name:= _ "evolution").Select ActiveChart.SeriesCollection(1).Trendlines(1).Select With Selection.Border .ColorIndex = 3 .Weight = xlThin .LineStyle = xlContinuous End With
j'ai essayé de simplifier, mais je m'embrouille pas mal !!
With Charts.Add .Name = "graphique" .ChartType = xlLineMarkers .SetSourceData source:=zone_select, PlotBy:=xlColumns .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False .Axes(xlCategory).TickLabels.NumberFormat = "dd - mmm" .SeriesCollection(1).Trendlines.Add(Type:=xlLinear, Forward:=1, _ Backward:=0, DisplayEquation:=False, DisplayRSquared:=False, Name:= _ "evolution").Select .SeriesCollection(1).Border.ColorIndex = 3 .SeriesCollection(1).Border.Weight = xlThin .SeriesCollection(1).Border.LineStyle = xlContinuous .Location Where:=xlLocationAsObject, Name:="graphe TRG" End With With Worksheets("graphe TRG").ChartObjects(2) .Left = 20 .Top = 470 End With
je sais, il reste un select... mais euh... ben je sais pas !! c la le probleme !!
et mes lignes 12, 13, 14 ne font rien !! (le programme marche.. mais il saute des lignes !!)
=> il prend la 1ere courbe et pas la courbe tendance, j'ai essayer en mettant "2" ou "evolution" à la place de "1" dans SerieCollection("..")
en plus, il me fait le graph sur un autre onglet !! bref, je suis pas encore au point !!
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumChanger taille graphique excel
- ForumMeme taille graphique excel
- ForumModifier taille graphique excel
- ForumMacro taille graphique
- ForumVba taille d'un graphique
- ForumTaille graphique macro excel
- ForumTaille graphique vba
- ForumMacro excel taille tableau
- ForumModifier taille graphique vba
- ForumMacro modifier taille graphique
- Voir plus