VBA graphique nuage de point

Bonjour,

Je cherche à faire un graph nuage de point à partir de données dans une nouvelle feuille, voila se que j'ai codé mais ça ne marche pas du tout pourriez vous m'aider?

Sub emplacement(p)
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlXYScatter
.HasTitle = True
.ChartTitle.Text = p
.Location Where:=xlLocationAsNewSheet
End With
ActiveSheets.Name = "Répartition " & p

For i = 1 To 10
ActiveChart.SeriesCollection(i).Name = Sheets(p).Cells(i + 3, 7).Value
ActiveChart.SeriesCollection(i).XValues = Sheets(p).Cells(i + 3, 9).Value
ActiveChart.SeriesCollection(i).Values = Sheets(p).Cells(i + 3, 8).Value
ActiveChart.SeriesCollection(i).MarkerStyle = 1
ActiveChart.SeriesCollection(i).MarkerSize = 7
ActiveChart.SeriesCollection(i).Format.Fill.ForeColor.RGB = rgbBlue
Next
End Sub

De plus, je cherche comment avoir une échelle fixe pour les deux axes car les valeurs sont des coordonnées GPS (en décimale) et ce serait plus réaliste...

Merci à tous pour votre aide ;)

Bonne Soirée A+

5 réponses

  1. bonjour

    ton code

    For i = 1 To 10  
      ...  
    Next

    produit 10 séries de données de 1 point chacune
    est ce que ce ne serait pas plutôt 1 série de données avec 10 points ?
    un code dans ce sens à adapter

    Public Sub emplacement(p)  
    Dim i As Long  
    Dim c As ChartObject  
    Sheets.Add After:=Sheets(Sheets.Count)  
    ActiveSheet.Name = "Répartition " & p  
    Set c = ActiveSheet.ChartObjects.Add(Range("A1").Left, Range("A1").Top, 300, 200)  
    With c.Chart  
      .ChartType = xlXYScatter  
      .SeriesCollection.NewSeries  
      .SeriesCollection(1).XValues = Sheets(p).Range("A1:A3")  
      .SeriesCollection(1).Values = Sheets(p).Range("B1:B3")  
      .HasTitle = True  
      .ChartTitle.Characters.Text = "graph1"  
      .SeriesCollection(1).MarkerStyle = 1  
      .SeriesCollection(1).MarkerSize = 7  
      .SeriesCollection(1).MarkerBackgroundColorIndex = 34  
      .SeriesCollection(1).MarkerForegroundColorIndex = 5  
      .Axes(xlCategory).MinimumScale = 0 
      .Axes(xlCategory).MaximumScale = 3 
      .Axes(xlValue).MinimumScale = 0 
      .Axes(xlValue).MaximumScale = 7 
    End With  
    End Sub

    bonne suite
    1
    1. Merci j'ai réussi en mixant les deux a obtenir ce que je voulais... ;)
      Par contre peut-on avoir la même échelle pour chaque axe même si on les affiches pas sur les différents intervalles?
      Par exemple:
      x entre 29 et 31
      y entre -2,5 et -4,5
      avec un pas pour 0,5 de 1cm par exemple sur les deux axes
      Merci encore bonne journée :D
      0
      1. je ne vois pas bien ce que tu veux dire,
        pour le minimum et le maximum, c'est la propriété MinimumScale et MaximumScale
        pour le pas c'est la propriété MajorUnit
        de chacun des axes qu'il te faut utiliser

        peut être as tu voulu parler de taille physique du graphique?

        si tu as voulu dire autre chose, re-expliques ...

        bonne suite
        0
        1. bonjour,
          merci de ton aide,
          je voudrais que visuellement 1 unité d'abscisse ai la même taille que 1 unité d'ordonnée, dc au final avoir un graphique plus ou moins rectagulaire, car ce osnt des coordonnées gps qui sont représentées et donc cela permettrait s'être plus réaliste par rapport au pays...
          Ex : le Ghana 1 degré de longitude et 6 de latitude j'aimerai donc avoir un graph avec un axe des abscisses très court et un axe des ordonnées proportionnellement plus grand...
          Merci de votre aide
          (J'espère que c'est plus clair.... ) :D
          0