VBA graphique nuage de point

Fermé
Mel5739d Messages postés 3 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012 - 30 avril 2012 à 21:42
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 1 mai 2012 à 22:06
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

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié par ccm81 le 1/05/2012 à 11:24
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié par ccm81 le 1/05/2012 à 22:08
un début de solution (à adapter)
https://www.cjoint.com/?0EbwfOiU5r1

bonne suite
1
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
1 mai 2012 à 22:06
fichier modifié à 22h06
0
Mel5739d Messages postés 3 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012
1 mai 2012 à 13:46
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
1 mai 2012 à 14:58
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mel5739d Messages postés 3 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 1 mai 2012
1 mai 2012 à 18:20
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