Visual Basic: Run-time error '13': Type mismatch

Bonjour la communauté,

J'ai un petit souci avec le code VB suivant:

Sub SetChartScales()
Dim cht As Chart
Dim cht1 As Chart
Dim cht2 As Chart

Set cht = Worksheets("Graphiques").ChartObjects("Chart 1").Chart
cht.Axes(xlValue).MinimumScale = Range("A5").Value
Set cht1 = Worksheets("Graphiques").ChartObjects("Chart 3").Chart
cht1.Axes(xlValue).MinimumScale = Range("A31").Value
Set cht2 = Worksheets("Graphiques").ChartObjects("Chart 5").Chart
cht2.Axes(xlValue).MinimumScale = Range("A58").Value

Lors du run, je recois la runtime error 13: type mismatch, avec cht1.Axes(xlValue).MinimumScale = Range("A31").Value surligné en jeu dans le Debug,

Je ne comprends pas car j'ai bien nommé ces variables. Quelq u'un peut m'expliquer?

Merci et bonne journée

6 réponses

  1. Bonjour,
    Contrôler que la variable [cht1] est bien renseignée avec l'objet [Chart3]..!
    0
    1. Je ne comprends, pas... je suis assez novice en VB:

      Set cht1 = Worksheets("Graphiques").ChartObjects("Chart 10").Chart
      'J'attribue à la variable cht1, le graphique Chart 10

      cht1.Axes(xlValue).MinimumScale = Range("A31").Value
      'Je modifie l'axe du graphique avec la valeur A31

      D'ailleurs il ne me sort pas d'erreur sur les 2 1ère ligne de code:

      Set cht = Worksheets("Graphiques").ChartObjects("Chart 3").Chart
      cht.Axes(xlValue).MinimumScale = Range("A5").Value
      0
      1. En gros ce que je voulais faire c'est lier l'échelle minimale du graphique 1,2,3 etc... à une cellule spécifique.
        0
        1. Bonjour,
          Dans le premier poste vous dite qu'il y a une erreur avec cht1.Axes(xlValue).MinimumScale = Range("A31").Value
          Donc il faut contrôler si votre variable [cht1] à bien reçu l'objet : Worksheets("Graphiques").ChartObjects("Chart 3").Chart
          Se n'est pas sur que l'attribution soit faite si votre Chart 3 n'est pas existant!
          i vous voulez que je regarde de plus prêt, mettre le fichier sur https://www.cjoint.com/ et poster le lien.
          1
          1. Contributeur
            Bonjour,
            Type mismatch c'est le type qui ne convient pas.
            Tu as bien un numérique qui s'aligne à droite en A31 et non un nombre en texte (s'aligne à gauche) ?
            eric
            1
            1. C'est bon c'est réglé... en fait il y avait des interférences avec d'autres codes du classeur (notamment des feuilles qui étaient actives au moment du lancement du code).

              En utilisant des références pleinement qualifiées j'ai pu éliminer ces interférences:

              Dim XXX as WorkSheet
              Set XXX = ThisWorkbook.Sheets("YYY")

              Set cht = Worksheets("Graphiques").ChartObjects("Chart 1").Chart
              cht.Axes(xlValue).MinimumScale = XXX.Range("A5").Value

              etc...

              Merci pour vos réponses
              0