Excel: macro pour création graphique

Fermé
oxmos59 Messages postés 7 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 7 juin 2011 - 3 févr. 2011 à 18:31
oxmos59 Messages postés 7 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 7 juin 2011 - 4 févr. 2011 à 16:24
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.



A voir également:

3 réponses

oxmos59 Messages postés 7 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 7 juin 2011 2
4 févr. 2011 à 16:24
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
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 3/02/2011 à 20:07
Bonsoir,

Selection ??

++
0
oxmos59 Messages postés 7 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 7 juin 2011 2
Modifié par oxmos59 le 4/02/2011 à 09:47
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