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 :

Automatisation de titres de graphiques : problème avec Excel 2007


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut Automatisation de titres de graphiques : problème avec Excel 2007
    Bonjour à tous,

    J'avais fait une macro (sans doute pas optimale) qui automatisait les titres de graphiques en fonction de la date contenu dans le titre d'un fichier externe.
    Cela marchait très bien sous Excel 2000.
    Depuis quelques jours je suis passé sous Excel 2007 et cette macro ne fonctionnait plus. Quelques détails mineurs à modifier et elle compile de nouveau. Cependant, il subsiste un petit problème : les titres de mes graphiques n'apparaissent plus sur les graphiques... En fait quand je vais sur les graphiques, la zone de titre est bien là, et quand je sélectionne cette zone je vois le texte qui a bien été actualisé. J'ai pensé à la propriété Color ou à ColorIndex mais en les modifiant rien n'a changé. Voici mon code :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    'Graphiques : actualisation des titres
        ActiveSheet.ChartObjects("Graphique 6").Activate
        ActiveChart.ChartTitle.Select
        Selection.Characters.Text = _
            "Aaaaaa aa aaaaaaaaa aaaaaaaaaa aaaaaa aaa aaaaa aa aaaaaaaaa (aaaaaaaaaaaa)" & Chr(10) & "- aaaaaaaaa aa " & Jour & " " & MoisEnLettre(Mois) & " " & Annee & " -"
        Selection.AutoScaleFont = False
        With Selection.Characters(Start:=1, Length:=76).Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .Size = 11.25
            .Color = RGB(153, 0, 0)
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlColorIndexNone
        End With
        Selection.AutoScaleFont = False
        With Selection.Characters(Start:=77, Length:=32).Font
            .Name = "Arial"
            .FontStyle = "Italique"
            .Size = 9.5
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlColorIndexNone
        End With
         ActiveChart.Axes(xlCategory).Select
        With ActiveChart.Axes(xlCategory)
            .MinimumScale = DateValue("01/01/2004")
            .MaximumScale = DateValue(echel_max)
            .BaseUnitIsAuto = True
            .MajorUnit = 1
            .MajorUnitScale = xlMonths
            .MinorUnitIsAuto = True
            .Crosses = xlCustom
            .CrossesAt = DateValue("01/01/2004")
            .AxisBetweenCategories = True
            .ReversePlotOrder = False
        End With
    En gras ce que j'ai rajouté mais qui ne change rien.

    Si quelqu'un voit une erreur dans ce code, je suis preneur. Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Bonjour,

    Il y a beaucoup de choses de changées en ce qui concerne les graphiques avec XL2007. Le mieux est de te servir de l'enregistreur de macros pour obtenir ce que tu souhaites.

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Utiliser les Select , Active , Selection .. est une mauvaise idée.. essai déjà :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6").ChartTitle.Characters.Text = _
            "Aaaaaa aa aaaaaaaaa aaaaaaaaaa aaaaaa aaa aaaaa aa aaaaaaaaa (aaaaaaaaaaaa)" & Chr(10) & "- aaaaaaaaa aa " & Jour & " " & MoisEnLettre(Mois) & " " & Annee & " -"
    avec le bon nom de feuille ....

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut
    Bonjour,

    Merci à vous deux pour vos réponses. Je vais surement suivre le conseil de Daniel C. en repassant de nouveau par l'enregistreur de macro.

    Pour le conseil de bbil, il s'agit donc de remettre à chaque instruction le "chemin complet" ? Ca donnerait un truc de ce genre :

    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
    'Graphiques : actualisation des titres
        ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6").ChartTitle.Characters.Text = _
            "Aaaaaa aa aaaaaaaaa aaaaaaaaaa aaaaaa aaa aaaaa aa aaaaaaaaa (aaaaaaaaaaaa)" & Chr(10) & "- aaaaaaaaa aa " & Jour & " " & MoisEnLettre(Mois) & " " & Annee & " -"
        ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6").ChartTitle.AutoScaleFont = False
        With ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6").ChartTitle.Characters(Start:=1, Length:=76).Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .Size = 11.25
            .Color = RGB(153, 0, 0)
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlColorIndexNone
        End With
        ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6").ChartTitle.AutoScaleFont = False
    Est-ce que c'est mieux parce que ça évite les éventuelles confusions ?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    bbil a raison dans l'absolu. Pour être complet, il faudrait même mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ThisWorkBook.Sheets("Feuille1").ChartObjects("Graphique 6")
    Ceci dit, "Application" représente l'application Excel, donc on peut en faire l'économie dans la plupart des cas. De même, si tu travailles avec un seul classeur, tu peux supprimer "ThisWorkbook". Pour éviter d'encombrer le code, en conservant la qualification des objets; il faut travailler avec "With" et "End With".
    Ton code devient :

    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
    'Graphiques : actualisation des titres
        With ThisWorkbook.Sheets("Feuille1").ChartObjects("Graphique 6")
            .ChartTitle.Characters.Text = _
            "Aaaaaa aa aaaaaaaaa aaaaaaaaaa aaaaaa aaa aaaaa aa aaaaaaaaa (aaaaaaaaaaaa)" & Chr(10) & "- aaaaaaaaa aa " & Jour & " " & MoisEnLettre(Mois) & " " & Annee & " -"
            .ChartTitle.AutoScaleFont = False
            With .ChartTitle.Characters(Start:=1, Length:=76).Font
                .Name = "Arial"
                .FontStyle = "Gras"
                .size = 11.25
                .Color = RGB(153, 0, 0)
                .Strikethrough = False
                .Superscript = False
                .Subscript = False
                .OutlineFont = False
                .Shadow = False
                .Underline = xlUnderlineStyleNone
                .ColorIndex = xlColorIndexNone
            End With
            .ChartTitle.AutoScaleFont = False
        End With

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    .... De même, si tu travailles avec un seul classeur, tu peux supprimer "ThisWorkbook". ...
    Car dans ce cas la tu ne peu être sur d'agir sur le bon classeur ...

Discussions similaires

  1. Problème avec excel 2007
    Par bolltt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2008, 21h57
  2. Problème avec Excel et Paradox
    Par Ninjodo dans le forum Bases de données
    Réponses: 30
    Dernier message: 05/11/2007, 07h35
  3. Problème avec Excel
    Par kmaniche dans le forum C++Builder
    Réponses: 11
    Dernier message: 26/03/2007, 10h05
  4. Problème avec Excel et tableau croisé dynamique
    Par françois62 dans le forum VBScript
    Réponses: 9
    Dernier message: 19/11/2006, 22h17
  5. [MFC] [CRecordset] Problème avec Excel
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 20/07/2005, 15h24

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