Nuage de point et vba

Signaler
Messages postés
3
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
17 septembre 2006
-
Messages postés
3
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
17 septembre 2006
-
j'ai un problème avec un nuage de point sur excel (le logiciel ne
digère pas le nombre de données que je veux traiter + 180) et je
cherche à faire une itération pour affecter à  chaque point sa
bonne valeur x et sa bonne valeur y , mais je n'ai pas trouvé de
solution


voilà ce que j'ai essayé de pondre !

Sub testyoyo()


Dim feuille As String

Dim n As Integer

Dim m As Integer

Dim a As Integer

Dim i As Integer

Dim j As Integer


feuille = InputBox("enter the sheet name", ["sheet name"])


n = InputBox("enter the firstline value ", ["first line value position"])


m = InputBox("enter the firstcolumnvalue ", ["first column value position"])

Sheets(feuille).Select

  a = m


While Cells(n, m) <> ""

m = m + 1

Wend


 Charts.Add

    ActiveChart.ChartType = xlXYScatter

    'allors là j'ai un problème pour sélectionner le tableau !!!!!!

    'ActiveChart.SetSourceData Source:=Sheets(feuille).Range(n&a:n+1 & m), PlotBy:=xlRows

    ActiveChart.SetSourceData
Source:=Sheets(feuille).Range(Cells(n, a).Address, Cells(n + 1 &
m).Address), PlotBy:=xlRows

    j = 1

 

    For i = a To m

      'ici j'ai pensé changer la valeur de la série avec mon itération mais il veut pas !!!!

    ActiveChart.SeriesCollection(j).XValues = "=Sheet3!" & Cells(n, i)

    ActiveChart.SeriesCollection(j).Values = "=Sheet3!&cells(n+1,i)"

     ActiveChart.SeriesCollection(j).DataLabels.Select

    Selection.AutoScaleFont = False

    With Selection.Font

        .Name = "Arial"

        .FontStyle = "Normal"

        .Size = 5.5

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

        .Background = xlAutomatic

      

       

    End With

    j = j + 1

    Next i

    ActiveChart.Location Where:=xlLocationAsNewSheet

  

    With ActiveChart.Axes(xlCategory)

        .HasMajorGridlines = False

        .HasMinorGridlines = False

    End With

    With ActiveChart.Axes(xlValue)

        .HasMajorGridlines = False

        .HasMinorGridlines = False

    End With


End Sub

4 réponses

Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
29
bonjour

je n'ai pas paufiné la procédure mais tu peux deja tester cette adaptation

Dim feuille As String
Dim n As Integer
Dim m As Integer
Dim a As Integer
Dim i As Integer
Dim j As Integer
Dim Plage As Range
Dim PlageX As Range, PlageY As Range


feuille = InputBox("enter the sheet name", ["sheet name"])


n = InputBox("enter the firstline value ", ["first line value position"])


m = InputBox("enter the firstcolumnvalue ", ["first column value position"])
Sheets(feuille).Select
  a = m


While Cells(n, m) <> ""
m = m + 1
Wend


 Charts.Add
    ActiveChart.ChartType = xlXYScatter
   
    Set Plage = Sheets(feuille).Range(Sheets(feuille).Cells(n, a).Address, _
                                        Sheets(feuille).Cells(n + 1, m).Address)
   
    'allors là j'ai un problème pour sélectionner le tableau !!!!!!
    'ActiveChart.SetSourceData Source:=Sheets(feuille).Range(n&a:n+1 & m), PlotBy:=xlRows
    ActiveChart.SetSourceData Source:=Plage, PlotBy:=xlRows
    j = 1
 
    For i = a To m - 1
    Set PlageX = Sheets(feuille).Cells(n, i)
    Set PlageY = Sheets(feuille).Cells(n + 1, i)
   
      'ici j'ai pensé changer la valeur de la série avec mon itération mais il veut pas !!!!
    If i > 1 Then ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(j).XValues = PlageX
    ActiveChart.SeriesCollection(j).Values = PlageY
   
    ActiveChart.SeriesCollection(j).HasDataLabels = True
     ActiveChart.SeriesCollection(j).DataLabels.Select
    Selection.AutoScaleFont = False
    With Selection.Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 5.5
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
      
       
    End With
    j = j + 1
    Next i
    ActiveChart.Location Where:=xlLocationAsNewSheet
  
    With ActiveChart.Axes(xlCategory)
        .HasMajorGridlines = False
        .HasMinorGridlines = False
    End With
    With ActiveChart.Axes(xlValue)
        .HasMajorGridlines = False
        .HasMinorGridlines = False
    End With

bon apres midi
michel 
Messages postés
3
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
17 septembre 2006

je viens de le tester et malheureusement il bog sur la ligne suivante :

Set Plage = Sheets(feuille).Range(Sheets(feuille).Cells(n, a).Address, _

                                       
Sheets(feuille).Cells(n + 1, m).Address)


le problème est que je me suis rendu compte que pour avoir un graphique
qui fonctionne je doit le mettre en ligne : 1ère : le nom du pays
deuxième le montant du PIB et la troisème le montant du commerce
extèrieur

dans ce cas là le graphique me fait apparaître le nuage de points mais
je dois reprendre chaque point pour lui affecter la bonne cellule pour
la valeur x et la valeur y !!


mais je n'ai pas trouvé le moyen de mettre mon fichier en pièce jointe pour que vous puissiez voir !
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
29
Il te suffit d'adapter la ligne en fonction de ton classeur...ça fonctionne chez moi
Messages postés
3
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
17 septembre 2006

je dois être crochu car il ne ma pose qu'un seul point !

je ne comprend pas ce que tu entends par adapter la ligne à mon
classeur ? ! mais si tu veux je peux te faire parvenir mon fichier tu
coprendrais mieux ?