VBA : problème Range sur plage dynamique

Résolu
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

4 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. chronicle13 Messages postés 3 Statut Membre
     
    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
  4. chronicle13 Messages postés 3 Statut Membre
     
    Super ca marche !!

    Merci beaucoup pour ton aide !!!
    -1