IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Impossible de modifier les propriétés d'un axe d'un graphique [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Points : 251
    Points
    251
    Par défaut Impossible de modifier les propriétés d'un axe d'un graphique
    Salut tout le monde,

    J'ai un problème qui me semble bizarre avec un bout de code destiné à modifier un axe d'un graphique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Dim myChart As Excel.Chart
    Dim myAxis As Excel.Axis    'J'avais d'abord essayé sans instancier d'objet Axis (myChart.Axes(,).___) mais ça ne fonctionnait pas...
     
    'Création d'une nouvelle feuille graphique
     
        Set myChart = Application.ActiveWorkbook.Charts.Add()
        With myChart
            Call .Location(xlLocationAsNewSheet, "Graph " & currSection)
            .ChartType = xlXYScatter
            .HasLegend = False
     
        Set myAxis = .Axes(xlValue, xlPrimary)
            myAxis.HasMajorGridlines = False
            myAxis.HasTitle = True
            myAxis.AxisTitle.Text = "Vitesse (km/h)"
        Set myAxis = .Axes(xlCategory, xlPrimary)
            myAxis.HasTitle = True
            myAxis.AxisTitle.Text = "Abscisse curviligne (m)"
     
        End With
    A l'éxécution ça plante sur "myAxis.HasTitle = True" (et sur les suivantes également).

    Quand je regarde mon objet, myAxis via le debugger, il semble effectivement que je ne puisse pas accéder à la plupart des propriétés de mon axe (dont HasMajorGridLines que j'essaie de changer) mais je ne comprends pas pourquoi (cf. capture d'écran ci-dessous).




    Le pire c'est que le code a fonctionné une fois. Au début j'avais défini mon axe comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myAxis = myChart.Axes(xlValues)
    Mais ça ne marchait pas et du coup j'avais essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myAxis = myChart.Axes(xlValues,xlPrimary)
    Et là, miracle, ça avait marché! Mais en ré-exécutant le code, re-plantage!

    D'ailleurs je n'y comprends rien parce que selon la doc:

    AxisGroup Argument de type XlAxisGroup facultatif. Spécifie le groupe d'axes. Si vous ne spécifiez pas cet argument, le groupe principal est utilisé. Les graphiques 3D n'ont qu'un groupe d'axes.

    XlAxisGroup peut être l'une de ces constantes XlAxisGroup.
    xlPrimary par défaut
    xlSecondary

    Quelqu'un a-t-il une idée de la raison pour laquelle je ne peux accéder aux propriétés de mes axes?

    Merci beaucoup d'avance!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Points : 414
    Points
    414
    Par défaut Quand l'axe n'est plus légendaire
    Citation Envoyé par Sclarckone Voir le message
    Quelqu'un a-t-il une idée de la raison pour laquelle je ne peux accéder aux propriétés de mes axes?
    L'ordre de déclaration des propriétés d'un Chart est hypersensible.

    1. Légende après Axe

    Dans votre exemple, ligne 11, ci-dessous en ligne 4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        With myChart
            Call .Location(xlLocationAsNewSheet, "Graph " & currSection)
            .ChartType = xlXYScatter
            .HasLegend = False ' Pas de légende avant la définition des axes
     
        Set myAxis = .Axes(xlValue, xlPrimary)
    Vous pourrez comparer avec Dessiner deux courbes sur un graphique Excel VBA où on a rejeté la légende après CurveAxis().

    2. Type de Chart après emplacement dans feuille nouvelle vs. existante

    Vous définissez le type xlXYScatter du Chart après son emplacement comme moi.
    Sauf que j'ai préféré utilisé un ChartObject.Chart car l'emplacement est indiqué à la création de l'objet dans une feuille existante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Set chartObj = ActiveSheet.ChartObjects.Add(Left:=50, Width:=500, Top:=100, Height:=300)
        With chartObj.Chart
            .ChartType = xlXYScatterSmoothNoMarkers ' Déclarer le type en premier
    Vous, vous créez une nouvelle feuille.

    Ce sont des pistes potentielles. Il se peut que cela fonctionne également comme vous l'avez indiqué jusqu'au moment où ...
    ___________

    Si la discussion est résolue, vous pouvez cliquer sur le bouton

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Points : 251
    Points
    251
    Par défaut
    Bien vu, bravo!

    Le problème était en fait que je cherchais à définir mes axes AVANT d'avoir défini les séries du graphique.

    En définissant ces propriétés APRES avoir défini les séries, ça fonctionne parfaitement.

    Ceci dit,le "constructeur" VB de l'objet Chart pourrait quand même instancier au moins 2 axes lors de l'initialisation du graphique...(il doit y avoir un cas de figure défavorable puisque ce n'est pas le cas)

    Merci beaucoup pour le coup de main en tout cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 05/04/2006, 17h28
  2. Réponses: 3
    Dernier message: 11/01/2006, 12h01
  3. Modifier les propriétés d'un fichier
    Par manu1407 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/11/2005, 10h39
  4. Réponses: 2
    Dernier message: 05/10/2005, 15h27
  5. Réponses: 11
    Dernier message: 30/08/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo