Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA macro graphique

Cloud

XLDnaute Nouveau
Bonjour,

je viens vers vous parce que je n'arrive pas à faire ce que je veux !
Je m'explique je veux faire un graphique "nuage de points" d'un ensemble de données.
Pour l'instant tout va bien.
J'arrive à faire le graphique sur une nouvelle feuille mais j'aimerais le faire sur la feuille active...
Voici mon code :

Code:
Sub gra()

'tracer le graphique
Set gr = Workbooks("Mesure.xlsx").Sheets("Marne").ChartObjects.Add(140, 10, 500, 300)
With gr
Set XValues = Range("D4:D10")
Set Values = Range("L4:L10")
[COLOR="#B22222"].SetSourceData Source:=Sheets("Marne").Range("D4:D10,L4:L10"), PlotBy:=xlColumns[/COLOR]
.ChartType = xlXYScatter
ActiveChart.SeriesCollection(1).XValues = XValues
ActiveChart.SeriesCollection(1).Values = Values
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "pk (km)"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " Chla (µg/l)"
.PlotArea.Interior.ColorIndex = 2
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
.ChartArea.Font.Size = 14
.Deselect
 End With
Application.ScreenUpdating = True

Application.DisplayAlerts = False
ActiveChart.SeriesCollection(2).Delete
gr.Delete
Application.DisplayAlerts = True
End Sub

ca bloque la ou c'est en rouge ...

Merci d'avance !
 
Dernière édition:

Hulk

XLDnaute Barbatruc
Re : VBA macro graphique

Slt Cloud, Forum ,

Essaie comme ceci..
Code:
Sub gr()
    
    Dim gr
    
    'tracer le graphique
    Set gr = Workbooks("Mesure.xlsm").Sheets("Marne").ChartObjects.Add(140, 10, 500, 300)
    
    With gr
        'Set XValues = Range("D4:D10")
        'Set YValues = Range("L4:L10") 'Renommé "YValues"
        gr.Chart.SetSourceData Source:=Sheets("Marne").Range("D4:D10", "L4:L10"), PlotBy:=xlColumns
        gr.Chart.ChartType = xlXYScatter
        'gr.Chart.SeriesCollection(1).Values = XValues
        'gr.Chart.SeriesCollection(9).Values = YValues
        gr.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
        gr.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "pk (km)"
        gr.Chart.Axes(xlValue, xlPrimary).HasTitle = True
        gr.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " Chla (µg/l)"
        gr.Chart.PlotArea.Interior.ColorIndex = 2
        gr.Chart.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
        gr.Chart.ChartArea.Font.Size = 14
        gr.Chart.Deselect
    End With

    Application.ScreenUpdating = True
    Application.DisplayAlerts = False
    'gr.Chart.SeriesCollection(2).Delete
    'gr.Delete
    Application.DisplayAlerts = True

End Sub
Il fallait mettre gr.Chart en début de ligne.

Essaie avec les sets XValues et YValues et les Series.Collection pour voir...
 

Cloud

XLDnaute Nouveau
Re : VBA macro graphique

Merci de la réponse.
Alors le graphe est sur la bonne feuille mais maintenant ça me met 9 séries au lieu de deux (idéalement j'en voudrai qu'une ^^ L en fonction de D)

Edit : alors le fait qu'il y ait 9 séries je crois que ça vient du
Range("D410", "L4:L10")
au lieu du
Range("D410, L4:L10")

Mais le deuxième cas renvoie une erreur...
Dans le premier cas c'est pareil que si l'on ecrit
Range("D4:L10") non ?
 
Dernière édition:

Cloud

XLDnaute Nouveau
Re : VBA macro graphique

Alors j'ai réussi ne ré avoir que 2 série en faisant à la place de range
Application.Union(Range("D410"), Range("L4:L10"))
c'est un peu du bidouillage je pense non ?
 

Cloud

XLDnaute Nouveau
Re : VBA macro graphique

voici le code qui fonctionne en partie comme je le veux
Code:
Sub gra()
    Set XValues = Range("D4:D10")
    Dim gr
    'tracer le graphique
    Set gr = Workbooks("Mesure.xlsx").Sheets("Marne").ChartObjects.Add(10, 310, 350, 220)
    With gr
        gr.Chart.SetSourceData Source:=Sheets("Marne").Range("L4:L10"), PlotBy:=xlColumns
        gr.Chart.ChartType = xlXYScatter
        gr.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
        gr.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "pk (km)"
        gr.Chart.Axes(xlValue, xlPrimary).HasTitle = True
        gr.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " Chla (µg/l)"
        gr.Chart.PlotArea.Interior.ColorIndex = 2
        gr.Chart.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
        gr.Chart.ChartArea.Font.Size = 14
        gr.Chart.Deselect
    End With
End Sub

le soucis est qu'il ne met met pas l'axe des X comme je le souhaite... moi ca va de 0 à 180 (km en l'occurence) et ca ne me met que de 1 à 7 (parce que 7 valeurs...)
 

Discussions similaires

Réponses
1
Affichages
361
Réponses
0
Affichages
293
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…