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

Rechercher des sujets similaires à "mise forme axe graphique"