Excel: macro pour création graphique
oxmos59
Messages postés
9
Statut
Membre
-
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:
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.
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:
- Excel: macro pour création graphique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
3 réponses
Bon j'ai trouvé ma solution. Je vous la met pour ceux qui serait intéressé:
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:
Bonne journée à tous.
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.
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
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)?
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)?