Problème Instrcutions code VBA - Erreur 438

Résolu
Bonjour à tous,

Je souhaite ajuster l'échelle des ordonnées de mon graphique en fonction des données représentées pas le graphique.
Pour cela, j'ai calculé dans la colonne U et V les valeurs min et max respectivement de chaque séries de données (listé par ligne).
Je souhaiterais à l'aide d'une macro dans VBA, prendre en compte les valeurs max et min calculer pour définir les bornes de l'échelle Y de mon graph.

Voici le code que j'ai écrit:

Sub Graphconso_Scale_definition()
Dim Conso As Worksheet
Workbooks(1).Worksheets(4).Activate
With ActiveChart
.Axes(xlValue).MinimumScale = Range(Application.Addresse(Application.Match(Range("Series"), Range("Data"), 0), 21)).Value
.Axes(xlValue).MinimumScale = Range(Application.Addresse(Application.Match(Range("Series"), Range("Data"), 0), 22)).Value
End With
End Sub

Mon souci étant que la ligne . ".Axes(xlValue).MinimumScale = Range(Application.Addresse(Application.Match(Range("Series"), Range("Data"), 0), 21)).Value"

Génère une erreur de type "438: object does not support this property or method"

J'ai beau chercher, je n'arrive pas à résoudre ce problème.

Quelqu'un aurait-il une solution à mon problème? Je tiens à signaler que je suis complètement novice en matière de programme tion VBA. Il se peut donc que ce qui m'échappe soit évident..

4 réponses

  1. Bonjour Eriiic!

    Merci infiniment: ça marche parfaitement! :-)

    Kayna
    1. Contributeur
      ok, n'oublie pas de mettre en résolu.
      eric
    2. C'est fait!

      Kayna
  2. Contributeur
    Bonjour,

    pour commencer .Addresse s'écrit sans e : .Address

    Et sans fichier joint pas grand monde ne pourra tester.
    Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

    eric
    1. Contributeur
      Bonjour,

      Private Sub Worksheet_Change(ByVal Target As Range)
          Dim c As Range
          If Target = [Series] Then
              'rechercher ligne Data
              Set c = [Data].Columns(1).Find([Series].Value, LookIn:=xlValues, lookat:=xlWhole)
              If c Is Nothing Then MsgBox ("Donnée absente."): Exit Sub
              ' mini maxi
              ActiveSheet.ChartObjects("Graph_Conso").Activate
              With ActiveChart.Axes(xlValue)
                  .MinimumScale = Range("U" & c.Row)
                  .MaximumScale = Range("W" & c.Row)
              End With
          End If
          [Series].Select
      End Sub

      https://www.cjoint.com/?BKfjSyVlaKb

      eric