Mise en forme de l'axe d'un graphique
Bonjour à toutes, à tous et le forum,
Je suis en train de réaliser une macro. Actuellement tout ce passe très bien.
Mais j'ai un soucis, je dois réaliser des graphiques via une macro. Cela fonctionne.
Mais je souhaite ajuster les valeurs minimale et maximale de l'axe des X.
Pour cela j'ai une macro :
Sheets("Données ciblées").Select
Lig2 = 1
While Cells(Lig2, 1).Value <> ""
NumLig2 = NumLig2 + 1
Lig2 = Lig2 + 1
Wend
Sheets("Graphique ciblé " & i).Select
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = Sheets("Données ciblées").range("E2").Value
ActiveChart.Axes(xlCategory).MaximumScale = Sheets("Données ciblées").range("E479").Value
Lorsque je place E479, mes 7 graphiques sont bien réajustés par rapport à la valeur en E479.
Mais cette ligne peut varier. J'ai donc écrit le programme suivant :
Sheets("Données ciblées").Select
Lig2 = 1
While Cells(Lig2, 1).Value <> ""
NumLig2 = NumLig2 + 1
Lig2 = Lig2 + 1
Wend
Sheets("Graphique ciblé " & i).Select
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = Sheets("Données ciblées").range("E2").Value
ActiveChart.Axes(xlCategory).MaximumScale = Sheets("Données ciblées").Cells(NumLig2,5).Value
Avec cette formulation
Cells(NumLig2,5).Value
qui doit être sous cette forme, j'arrive à modifier l'axe X de mon premier graphique, mais les N autres graphiques ne sont pas modifiés.
UP
J'ai posé :
Sheets("Données ciblées").Select
Lig2 = 1
While Cells(Lig2, 1).Value <> ""
NumLig2 = NumLig2 + 1
Lig2 = Lig2 + 1
Wend
Sheets("Graphique ciblé " & i).Select
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = Sheets("Données ciblées").range("E2").Value
ActiveChart.Axes(xlCategory).MaximumScale = Sheets("Données ciblées").range("E" & NumLig2).Value
Cela ne fonctionne toujours pas...
Le premier graphique c'est OK, mais les suivants non...
Bonjour,
Merci de joindre un fichier à ta demande.
Cdlt.
Le fichier est trop lourd même en compressant avec WinRAR je suis à 1378KO
Re,
Trouve une solution pour réduire la taille de ton fichier, mais qu'il soit représentatif de ta réalité.
Tu peux aussi utiliser ce lien pour joindre un fichier : http://www.cjoint.com/
Cdlt
Re,
Un début de réponse, mais j'ai travaillé sur les graphiques issus de la feuille Analyse des données.
Travaille sur une copie de ton fichier.
Supprime les graphiques issus de cette feuille et copie cette procédure dans un module standard.
A te relire.
Cdlt.
Option Explicit
Public Sub Create_Charts_1()
Dim wb As Workbook
Dim ws As Worksheet, wsData As Worksheet, newWS As Worksheet
Dim lCol As Long, lastRow As Long
Dim rngData As range, rng_X As range, rng_Y As range
'Dim min_x As Double, max_x As Double
Dim min_y As Double, max_y As Double
Dim objChart As ChartObject
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets("Analyse des données")
On Error Resume Next
For Each ws In wb.Worksheets
If Left(ws.Name, 3) = "RG_" Then ws.Delete
Next ws
On Error GoTo 0
Application.DisplayAlerts = True
With wsData
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng_X = .Cells(2, 5).Resize(lastRow)
'min_x = WorksheetFunction.Min(rng_X)
'max_x = WorksheetFunction.Max(rng_X)
Set rngData = .Cells(2, 6).Resize(lastRow - 1, 7)
'min_y = WorksheetFunction.Min(rngData)
max_y = WorksheetFunction.Max(rngData)
For lCol = 6 To 12
Set rng_Y = .Cells(2, lCol).Resize(lastRow - 1)
Set newWS = wb.Worksheets.Add(after:=Worksheets(Worksheets.Count))
With newWS
.Name = "RG_" & wsData.Cells(1, lCol).Value
Set objChart = .ChartObjects.Add(.Cells(2, 2).Left, .Cells(2, 2).Top, 700, 450)
objChart.Name = "RG_" & wsData.Cells(1, lCol).Value
With objChart.Chart
.ChartType = xlXYScatterLines
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = "RG " & wsData.Cells(1, lCol).Value
.SeriesCollection(1).XValues = rng_X
.SeriesCollection(1).Values = rng_Y
.HasLegend = False
.Axes(xlCategory).MinimumScale = 0
.Axes(xlCategory).MaximumScaleIsAuto = True
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MaximumScale = max_y * 1.1
End With
End With
Next lCol
End With
With wsData
.Activate
.Cells(1).Select
End With
Set objChart = Nothing
Set rng_Y = Nothing: Set rng_X = Nothing: Set rngData = Nothing
Set newWS = Nothing: Set wsData = Nothing
Set wb = Nothing
End Sub
Merci Jean-Eric mais concernant mes graphiques "Analyse des données" ils fonctionnent très bien...
Et le problème avec ton code c'est que je n'en comprend pas plus de 40%. Mon seul soucis était la cellule variable à intégrer dans cette ligne de code :
ActiveChart.Axes(xlCategory).MaximumScale = Sheets("Données ciblées").range("E" & NumLig2).Value
Pour les graphiques ciblées et non les graphiques
Bonjour,
La nouvelle procédure pour les graphiques ciblées.
Exécute la procédure Create_Charts_2 du fichier joint.
A te relire pour commenter les résultats. Les explications viendront après (je commenterai le code).
Cdlt.
FANTASTIQUE !!!
Blocage de ***** de l'entreprise...
Je ne peux pas DownLoad ton fichier Jean-Eric...
Je le ferais ce soir du coup :/
Tu as donc réussit à créer les graphiques ciblées et formater l'axe selon une variable ?
Je pense que tu dois t'arracher les cheveux en voyant mon code...
Mais n'ayant pas eu de cours dans ce domaine et étant en autonomie total (j'apprends à mes collègues à utiliser Paint, tu vois le niveau), j'utilise souvent l'enregistreur de macro puis j'adapte avec les variables et formulations que je connais.
Il y a donc beaucoup de .Select etc mais bon, tant que ça fonctionne ^^
En tout cas, merci de t'investir et de m'aider !
Re,
Dans les procédures, tu remarqueras que toutes les variables sont déclarées avec des noms qui j'espère sont clairs.
min_x est la valeur mini de l'axe X ; rng_X est la plage de cellules pour l'axe X du graphique, etc...
Prends un peu de temps et redis moi pour un complément d'informations.
Cdlt.
Bonjour Jean-Eric,
Je viens seulement de voir que tu avais répondu à mon dernier message...
J'ai donc résolu mon problème en enlevant simplement la plage Maximale de mes données sur l'axe X.
Le graphique à partir de la valeur de départ, ce met automatiquement en forme !
Merci de ton temps, et de ta patience !
Sujet résolu