VBA : problème Range sur plage dynamique
Résolu
chronicle13
Messages postés
3
Statut
Membre
-
chronicle13 Messages postés 3 Statut Membre -
chronicle13 Messages postés 3 Statut Membre -
Bonjour à tous.
Je suis nouveau en programmation sur Excel et je n'ai pas pu résoudre mon problème alors je m'adresse à vous.
Je cherche à générer des graphiques de manière automatique. Pour cela je range les plages qui seront les axes de X et des Y.
j'utilise :
XderLigne = Range(Range("B7"), Range("B7").End(xlDown))
Cela marche quand j'inscrit en "dur" les inputs. Le range marche et prend la plage de la 1ere cellule à la dernière non-vide
Pour mes besoins, je dois générer ces inputs via une fonction. Et la la fonction range ne marche plus du tout. Il semble que la 1ere cellule renvoyée soit OK mais me ressort -4161 pour la derniere cellule.
C'est à n'y rien comprendre. Il doit me manquer une étape à effectuer
Par avance merci si vous avez une idée!!
Dim Numéro_Simulation As Single
Cells(1, 2).Clear
ActiveSheet.Range("B7:IV17").ClearContents
For Numéro_Simulation = 1 To Cells(3, 2).Value
Cells(1, 2).Value = Cells(1, 2).Value + 1
Cells(7, 1 + Numéro_Simulation).Value = Cells(1, 2).Value
Cells(8, 1 + Numéro_Simulation).Value = Cells(2, 2).Value
Next
XderLigne = Range(Range("B7"), Range("B7").End(xlToRight))
Range("B8").Select
YderLigne = Range(Selection, Selection.End(xlToRight))
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("D22")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = XderLigne
ActiveChart.SeriesCollection(1).Values = YderLigne
ActiveChart.SeriesCollection(1).Name = "=""Premium"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "test"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveWindow.Visible = False
Windows("Classeur1.xls").Activate
Range("J4").Select
End Sub
Je suis nouveau en programmation sur Excel et je n'ai pas pu résoudre mon problème alors je m'adresse à vous.
Je cherche à générer des graphiques de manière automatique. Pour cela je range les plages qui seront les axes de X et des Y.
j'utilise :
XderLigne = Range(Range("B7"), Range("B7").End(xlDown))
Cela marche quand j'inscrit en "dur" les inputs. Le range marche et prend la plage de la 1ere cellule à la dernière non-vide
Pour mes besoins, je dois générer ces inputs via une fonction. Et la la fonction range ne marche plus du tout. Il semble que la 1ere cellule renvoyée soit OK mais me ressort -4161 pour la derniere cellule.
C'est à n'y rien comprendre. Il doit me manquer une étape à effectuer
Par avance merci si vous avez une idée!!
Dim Numéro_Simulation As Single
Cells(1, 2).Clear
ActiveSheet.Range("B7:IV17").ClearContents
For Numéro_Simulation = 1 To Cells(3, 2).Value
Cells(1, 2).Value = Cells(1, 2).Value + 1
Cells(7, 1 + Numéro_Simulation).Value = Cells(1, 2).Value
Cells(8, 1 + Numéro_Simulation).Value = Cells(2, 2).Value
Next
XderLigne = Range(Range("B7"), Range("B7").End(xlToRight))
Range("B8").Select
YderLigne = Range(Selection, Selection.End(xlToRight))
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("D22")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = XderLigne
ActiveChart.SeriesCollection(1).Values = YderLigne
ActiveChart.SeriesCollection(1).Name = "=""Premium"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "test"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveWindow.Visible = False
Windows("Classeur1.xls").Activate
Range("J4").Select
End Sub
4 réponses
-
Re,
Je ne vois pas où est l'erreur, voir avec ce code, seule remarque, tu ne spécifie pas que les données sont en lignes et il est possible que par défaut ce soit en colonneSub AjouteGraph() Dim XderLigne As String Dim YderLigne As String XderLigne = Range(Range("B7"), Range("B7").End(xlToRight)).Address YderLigne = Range(Range("B8"), Range("B8").End(xlToRight)).Address Charts.Add ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1" ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("F28"), PlotBy:= _ xlRows ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = Sheets("Feuil1").Range(XderLigne) ActiveChart.SeriesCollection(1).Values = Sheets("Feuil1").Range(YderLigne) Range("I14").Select End Sub
A+ -
Bonjour,
A première vue !
dans tes sérieColection() tu doit donner une plage et pas le bout de la plage.
Dim XderLigne as string
XderLigne = Range(Range("B7"), Range("B7").End(xlToRight)) .address
sinon tu donne le contenu.
Tu dit
A+ -
Merci pour ta réponse, mais elle ne semble pas fonctionner.
Effectivement, elle me renvoie la plage de cellule en notation Excel (B7:CW7) et c'est tel quel qu'elle apparait sur l'axe des abscisses de mon graph. Ce n'est donc pas exploitable tel quel -