VBA : problème Range sur plage dynamique

Résolu/Fermé
chronicle13 Messages postés 3 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 5 octobre 2008 - 4 oct. 2008 à 09:33
chronicle13 Messages postés 3 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 5 octobre 2008 - 5 oct. 2008 à 10:37
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

4 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 oct. 2008 à 07:04
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 colonne
Sub 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+
2
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 oct. 2008 à 11:28
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+
-1
chronicle13 Messages postés 3 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 5 octobre 2008
4 oct. 2008 à 19:17
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
-1
chronicle13 Messages postés 3 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 5 octobre 2008
5 oct. 2008 à 10:37
Super ca marche !!

Merci beaucoup pour ton aide !!!
-1