Figer axe abscisses et ordonnées dans graph VBA

Bonjour

j'affiche par code vba un graphique d'après un tableau.

Ce tableau comporte toujours 4 lignes (rubriques) et entre 2 et 12 mois selon le paramétrage choisi par l'utilisateur.

En abscisses doivent figurer les mois

En ordonnées doivent figurer des montants (en €)

Les 4 rubriques étant mes 4 séries représentées chacune par une courbe

Si mon tableau ne comporte que 2 ou 3 mois, ce sont les 4 rubriques qui basculent automatiquement en abscisses.

Est-il possible de figer les informations ?

Merci

Bonjour

Afin d'illustrer mon problème, j'ai réalisé sur un fichier excel, un tableau simple et le code juste pour le graph.

Si vous exécutez le programme tel quel, vous aurez un graph avec 6 mois en abscisse et mes 4 courbes (A B C D)

Ensuite, si vous supprimez les données des 3 ou 4 derniers mois et que vous relancez la macro, les séries (A B C D) se trouvent en abscisse et les courbes sont les mois, ce qui ne veux plus rien dire.

Peut-on figer l'axe des abscisses ?

Merci

121graph-achille60.xlsm (14.16 Ko)

Bonjour à tous et bonne année 2014

Je vois qu'il y en a beaucoup parmi vous qui bossent, bravo !!!

Si quelqu'un pouvait jeter un œil à mon problème, ça me toucherait beaucoup

Merci d'avance

Bonjour Achille60 et Bonne Année

Voici un code qui pourrait peut-être te convenir

Sub graph()
  Dim Zone As Range
  Set Zone = ActiveSheet.Range("C5:" & Range("K9").End(xlToLeft).Address(0, 0)).Offset(0, 0)
  'Zone.Select
  ActiveSheet.Shapes.AddChart.Select
  With ActiveChart
    .ChartType = xlLineMarkers
    ' Obliger que la source soit les lignes
    .SetSourceData Source:=Zone, PlotBy:=xlRows
  End With
  With ActiveSheet.ChartObjects(1)
    .Left = Range("B13:I33").Left
    .Top = Range("B13:I33").Top
    .Width = Range("B13:I33").Width
    .Height = Range("B13:I33").Height
  End With
End Sub

A+

Merci beaucoup BrunoM45 de Montargis

C'est pile poil ce que je voulais.

Bonne Année à toi et à bientôt sur ce forum

Bonjour,

Avec un peu de retard, mais...

Option Explicit
Public Sub creer_graphique()
Dim Ws As Worksheet
Dim Plage As Range
Dim Shp As Shape
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil1")
    On Error Resume Next
    Ws.ChartObjects.Delete
    On Error GoTo 0
    With Ws
        Set Plage = .[C5].CurrentRegion
        Set Shp = .Shapes.AddChart
        With .Range("B13:I33")
            Shp.Top = .Top
            Shp.Left = .Left
            Shp.Height = .Height
            Shp.Width = .Width
        End With
        With Shp
            .Name = "graph_1"
            With .Chart
                .SetSourceData Source:=Plage, PlotBy:=xlRows
                .ChartType = xlLineMarkers
                .SetElement (msoElementLegendBottom)
            End With
        End With
    End With
    Set Ws = Nothing: Set Plage = Nothing: Set Shp = Nothing
End Sub

Merci beaucoup Jean-Eric

j'ai testé ta solution qui marche également.

Bonne année à toi

Rechercher des sujets similaires à "figer axe abscisses ordonnees graph vba"