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 :

Modification style des axes (VBA) [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut Modification style des axes (VBA)
    Bonjour,

    Je crée à l'aide d'une macro des graphiques.
    Je souhaiterais donc attribuer une mise en page particulière (changer la police et la taille) aux axes, au titre et aussi aux étiquettes des données.
    Pour le titre, pas de soucis, en revanche pour le reste, je ne vois pas du tout comment faire.

    J'ai cherché sur pas mal de sites mais rien, j'ai essayé avec l'enregistreur de macro mais il ne prend pas en compte les modifications que j'apporte, il enregistre uniquement l'objet que je séléctionne.

    Si quelqu'un a une idée ou une piste, je suis preneuse !!

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    L'enregistreur de macros n'est pa ce qui fonctionne le mieux dans XL2007. J'ai enregistré puis aménagé le code suivant avec XL2010. Teste-le :

    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
    22
        With ActiveChart
            With .ChartTitle.Format.TextFrame2.TextRange.Font
                .Size = 12
                .Name = "Arial"
            End With
            With .Axes(xlValue).AxisTitle.Format.TextFrame2.TextRange.Font
                .Name = "Arial"
                .Size = 8
            End With
            With .Axes(xlCategory).AxisTitle.Format.TextFrame2.TextRange.Font
                .Name = "Arial"
                .Size = 8
            End With
            With .SeriesCollection(1)
                .ApplyDataLabels
            With .DataLabels.Format.TextFrame2.TextRange.Font
                .BaselineOffset = 0
                .Size = 7.5
                .Name = "Arial"
            End With
            End With
        End With

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Je te remercie beaucoup.

    J'aurais besoin de quelques explications concernant Je voudrais savoir à quoi ça correspond.
    Merci encore

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Tu as raison. C'est comme ça qu'on apprend. "TextFrame2" (pourquoi "2" ?) est l'objet qui contient tout ce qui concerne un titre : le cadre, le texte, les mises en forme. TextRange contient tout ce qui concerne la mise en forme du texte contenu dans TextFrame2. Si tu as l'habitude des versions antérieures d'Excel, c'est assez déroutant. Il y a des spécialistes qui travaillent sur le modèle objet de Chart depuis la sortie de XL2007 et qui n'en ont pas encore fait le tour. Si tu travailles beaucoup sur les graphiques et si tu as l'occasion de passer à XL2010, n'hésite pas.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup.

    Cependant, je ne suis pas sure que XLS2007 utilise textFrame et textRange, je pense que c'est une spécificité à 2010. Je n'ai jamais vu ça en 2007.

    Du coup, ca ne résolue pas trop mon problème. J'avais essayé avec les "With" ms cela n'a pas donné de récultats concluants !

    Je vais bien finir par trouver....

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Fais comme tu veux. Je viens de tourner la macro sous XL2007 sans problème. Il suffit de cliquer sur un de ces deux mots clé et d'appuyer sur F1 pour avoir l'aide. Quelle erreur as-tu et sur quelle ligne ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Quand je lance la macro, l'erreur me dit que l'objet n'est pas référencé. En effet quand je regarde dans l'aide, je trouve bien TextFrame mais pas TextRange.

    C'est sans doute une amélioration qui se trouve dans Excel 2010.

    Merci pour ton aide !

    Autant pour moi, si tu as réussi à la faire tourner, ca devrait fonctionner pour moi... Mais non

    Je ne vois pas d'où l'erreur peut venir...

    Je crois que j'ai compris d'où vient l'erreur par rapport à ton code...

    En effet, ce dernier fonctionne pour le titre et pour les étiquettes des données mais pas pour les axes.
    Le code seléctionne les titres des axes, or je n'en ai pas. Voilà pourquoi j'ai l'erreur "Objet requis".

    Du coup, je cherche à modifier le style de l'axe. Mais si j'enlève "AxisTitle", forcément, j'ai une erreur.

    Est ce que quelqu'un sait comment s'appelle cette zone ?

    Merci beaucoup

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Pour l'axe des X, à adapter ppour les ordonnées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            If .Axes(xlValue).HasTitle = True Then
                With .Axes(xlValue).AxisTitle.Format.TextFrame2.TextRange.Font
                    .Name = "Arial"
                    .Size = 8
                End With
            End If

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Je te remercie beaucoup mais je viens de trouver une solution un peu plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       ActiveChart.ChartArea.Font.Size = 10
        ActiveChart.ChartArea.Font.Name = "Arial"
    Tout simplement...
    En tout cas, je te remercie beaucoup de ton aide et du temps que tu as pu passer...

    Bonne journée.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bien vu, si tu as uniquement besoin de la même police et taille de police pour tous les éléments.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Effectivement, tous les éléments doivent avoir la même police et la même taille sauf le titre que je modifie par la suite !

    Merci encore

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

Discussions similaires

  1. Problème lors de modification du style des \section
    Par ANOVA dans le forum Mise en forme
    Réponses: 5
    Dernier message: 07/11/2011, 10h20
  2. Modification police des axes sur un diagramme
    Par mikedavem dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 23/01/2008, 12h39
  3. [WSS2]Modification du style des pages
    Par Ricard64 dans le forum SharePoint
    Réponses: 1
    Dernier message: 17/08/2007, 20h02
  4. vba Graph Excel (valeur des axes)
    Par maxtin dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/12/2006, 21h50
  5. [VB6] Modification des axes d'un composant Chart
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2003, 08h33

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