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,
    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
    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. 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. 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