Excel: macro pour création graphique

oxmos59 Messages postés 9 Statut Membre -  
oxmos59 Messages postés 9 Statut Membre -
Bonjour à tous,

J'ai a créer une macro excel qui génère un graphique. Jusque la tout va bien. Le problème est dans la plage de cellule à utiliser...

J'extrais via un fichier CSV mes données au préalable, et ne sélectionne qu'une partie des cellules extraites.

Je souhaiterais donc que excel créé un graphique à partir des cellules sélectionnées.

Voici mon code provisoire:

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 03/02/2011 par xxx
'
' Touche de raccourci du clavier: Ctrl+d
'
    ActiveCell.Select
    Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("XXX"), PlotBy _
        :=xlColumns
    ActiveChart.SeriesCollection(1).Name = "=""PIC"""
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Historique des pressions"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "heure"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "valeur"
    End With
End Sub


Tout est ok sauf la valeur à mettre en ligne 4 pour sélectionner mes données. Quelqu'un aurait une solution?

Existe t'il une commande qui reprend la plage de données des cellules sélectionnées pour la copier par la suite dans le "Range"?

Merci à vous tous.

3 réponses

  1. oxmos59 Messages postés 9 Statut Membre 2
     
    Bon j'ai trouvé ma solution. Je vous la met pour ceux qui serait intéressé:

    Range("F1").Select
        Set Plage = Application.InputBox("Merci de sélectionner l'heure de début dans la colonne C et glisser votre sélection jusqu'à l'heure de fin dans la colonne D. Exemple: C5:D60", "Sélection de cellules", Type:=8)
        Plage.Select
        Selection.Copy
        Range("F2").Select
        ActiveSheet.Paste
        Range("F1:G517").Select
    


    Cette commande va vous ouvrir une boite de dialogue pour vous demander de sélectionner une plage de cellule (soit en texte direct, soit via la souris).

    Il va ensuite copier celle plage de cellule, la collé en F2 et sélectionner les deux colonnes jusqu'à la ligne 517.

    Après on peut faire direct notre graphique, je vous mets la commande si vous le souhaitez ci dessous:

     Charts.Add
        ActiveChart.ChartType = xlXYScatter
        ActiveChart.SetSourceData Source:=Sheets("D1102030").Range("F1:G924"), _
            PlotBy:=xlColumns
        ActiveChart.SeriesCollection(2).Delete
        ActiveChart.SeriesCollection(1).XValues = "=D1102030!R2C6:R924C6"
        ActiveChart.SeriesCollection(1).Values = "=D1102030!R2C7:R924C7"
        ActiveChart.Location Where:=xlLocationAsNewSheet
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "Historique PIC"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Heure"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Valeur (bar)"
        End With
        ActiveChart.Legend.Select
        Selection.Delete
        ActiveChart.SeriesCollection(1).Select
        ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlLogarithmic, Forward _
            :=0, Backward:=0, DisplayEquation:=False, DisplayRSquared:=False).Select
        ActiveChart.ChartArea.Select
        ActiveChart.PlotArea.Select
        With Selection.Border
            .ColorIndex = 16
            .Weight = xlThin
            .LineStyle = xlContinuous
        End With
        With Selection.Interior
            .ColorIndex = 2
            .PatternColorIndex = 1
            .Pattern = xlSolid
        End With
        ActiveChart.Deselect


    Bonne journée à tous.
    2
  2. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonsoir,

    Selection ??

    ++
    0
  3. oxmos59 Messages postés 9 Statut Membre 2
     
    Bonjour, merci d'avoir répondu déjà.

    Je donne un exemple:

    J'extrais 500 lignes à partir d'un fichier CSV. Sur ces 500 lignes, je ne vais sélectionner que 50 lignes, de A80 à B130 par exemple.

    Je voudrais qu'en cliquant sur ma macro graphique, elle génère un graphique avec la plage de cellule sélectionnée.

    Est-ce possible?

    Merci

    EDIT: J'ai commencé à tester quelque chose en VBA mais je n'arrive pas à boucler...
    
    Dim cel1 As String
    Dim cel2 As String
      cel1 = InputBox("Entrez le numéro de la première ligne de celluled à prendre en compte.")
      cel2 = InputBox("Entrez le numéro de la dernière ligne de cellules à prendre en compte.")
      Cells(1, 4).Value = cel1
      Cells(1, 5).Value = cel2
      Charts.Add
     ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("Cells(1, 4).Value:Cells(1, 5).Value"), PlotBy:=xlColumns
        ActiveChart.SeriesCollection(1).Name = "=""PIC"""
       ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
        With ActiveChart
           .HasTitle = True
          .ChartTitle.Characters.Text = "Historique des pressions"
          .Axes(xlCategory, xlPrimary).HasTitle = True
          .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "heure"
           .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "valeur"
    End With
    End Sub


    C'est la ligne en gras qui fait défaut... Comment lui dire que le range pour mon graph sera la (valeur variable 1) à (valeur variable 2)?
    0