VBA graphique nuage de point

Mel5739d Messages postés 3 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    un début de solution (à adapter)
    https://www.cjoint.com/?0EbwfOiU5r1

    bonne suite
    1
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      fichier modifié à 22h06
      0
  3. Mel5739d Messages postés 3 Statut Membre
     
    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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mel5739d Messages postés 3 Statut Membre
     
    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