Selection données VBA

Bonjour,

Je bloque totalement sur un bout de code VBA (je suis novice) et un problème de syntaxe.
Mon problème étant la création d'un graphique (Y=f(X)) en sélectionnant au préalable X et Y dans 2 "bout" de colonnes.
On a 4 entiers fixé par l'utilisateur tel que :
[a,b] intervalle des lignes à sélectionner
C,D 2 nombres correspondant au numéro des colonnes.
Je veux définir la plage :
X = (.Cells(a,C):.Cells(b,C))
Y= (.Cells(a,D):.Cells(b,D))
Et tracer Y=X

Le code pour le graphe (vous l'aurez compris le Range me pose soucis) :
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Range(xxxxxx) , PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe"
ActiveChart.HasLegend = True

Si quelqu'un à la syntaxe correcte je suis preneur!:)
Merci

4 réponses

  1. Bonjour

    un petit exemple qui définit les plages de données d'un graphique de type nuage de points
    Public Sub OK()
    Dim gr As Object
    Dim plageX As String, plageY As String, a As Long, b As Long
    a = 3
    b = 10
    plageX = "E" & a & ":" & "E" & b
    plageY = "F" & a & ":" & "F" & b
    Set gr = ActiveSheet.ChartObjects(1).Chart
    With gr.SeriesCollection(1)
    .XValues = Range(plageX)
    .Values = Range(plageY)
    End With
    End Sub

    Cdlmnt
    0
    1. Ce n'est pas exactement la réponse que j'attendais, dans ton exemple les colonnes sont fixées (F et E). Dans mon cas ce sont des variables.

      Mon code "test" :

      Set A=Range(.Cells(borne1,colonne1),.Cells(borne2,colonne1):.Cells(borne1,colonne2),.Cells(borne2,colonne2))

      Charts.Add
      ActiveChart.ChartType = xlXYScatterSmooth
      ActiveChart.SetSourceData Source:=A, PlotBy:=xlColumns
      ActiveChart.Location Where:=xlLocationAsNewSheet
      ActiveChart.Move After:=Sheets(Sheets.Count)
      ActiveChart.HasLegend = True

      Mon A=Range ne marche toujours pas...

      J'ai voulu contourner le probleme en copiant les 2 "bouts" de colonnes de ma plage de donnée sur une feuille afin de pouvoir les sélectionner ensemble(vu qu'elles seraient alors collées et à la ligne 1).
      Cependant je n'arrive toujours pas a selectionner uniquement un "fragment" d'une colonne pour finaliser ce "bricolage"....
      0
      1. les colonnes sont fixées (F et E). Dans mon cas ce sont des variables.
        il suffit d'utiliser des variables pour les colonnes aussi, mais bon, le problème est peut être ailleurs
        Public Sub OK()
        Dim gr As Object
        Dim plageX As String, plageY As String, a As Long, b As Long, cox As String, coy As String
        a = 3
        b = 10
        cox = "A"
        coy = "B"
        plageX = cox & a & ":" & cox & b
        plageY = coy & a & ":" & coy & b
        Set gr = ActiveSheet.ChartObjects(1).Chart
        With gr.SeriesCollection(1)
        .XValues = Range(plageX)
        .Values = Range(plageY)
        End With
        End Sub

        Cdlmnt
        0
        1. Le problème étant la retranscription des données. Comment dire à excel/VBA que 2 = colonne B, 3 = colonne C etc...?
          Car dans l'exemple que tu cites, cox et coy sont directement des lettres, or j'ai ces même données sous forme de chiffre.

          cordialement
          0
      2. Public Sub OK()
        Dim gr As Object
        Dim plageX As String, plageY As String, a As Long, b As Long, cox As Long, coy As Long
        a = 3
        b = 8
        cox = 1
        coy = 2
        plageX = ActiveSheet.Range(Cells(a, cox), Cells(b, cox)).Address
        plageY = ActiveSheet.Range(Cells(a, coy), Cells(b, coy)).Address
        Set gr = ActiveSheet.ChartObjects(1).Chart
        With gr.SeriesCollection(1)
        .XValues = Range(plageX)
        .Values = Range(plageY)
        End With
        End Sub

        Cdlmnt
        0