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 :

[Problème] Comment modifier l'échelle d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut [Problème] Comment modifier l'échelle d'un graphique
    Re-bonjour... C'est encore moi ! Je n'aurai jamais été aussi actif sur ce forum que ces derniers jours !

    J'entame la phase 3 de mon projet : après le masquage des feuilles, le masquage des tableaux ? Non pas le maquage des courbes

    La 3e partie de mon fichier Excel comporte une courbe représentative des calculs contenus dans les tableaux des phases précédentes. Seulement, monsieur le chef n'est pas content de l'échelle de ces courbes, et il veut une macro qui change les valeurs d'échelle pour le début de l'axe X, et le début de l'axe Y (ce qui permettrait en un sens de "zoomer" la courbe, sur la partie importante, pusique les axes ne commencerait pas à 0.)

    Suis-je clair ? Ouskel'n'or et mordrhim je vous attend avec impatience

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Là, je ne peux que te conseiller d'enregistrer un macro en faisant. Tu modifies l'origine ton échelle et tu nous montres le code.
    Après on avisera

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Pas bête J'essaie...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Voici :

    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
    Sub courbe()
    '
    ' courbe Macro
    ' Macro enregistrée le 17/08/2007 par xxxx
    '
     
    '
        ActiveChart.SeriesCollection(4).Select
        ActiveChart.SeriesCollection(3).Select
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection(7).Select
        ActiveChart.Axes(xlCategory).Select
        ActiveChart.Axes(xlValue).Select
        With ActiveChart.Axes(xlValue)
            .MinimumScale = 0
            .MaximumScaleIsAuto = True
            .MinorUnitIsAuto = True
            .MajorUnitIsAuto = True
            .Crosses = xlAutomatic
            .ReversePlotOrder = False
            .ScaleType = xlLinear
            .DisplayUnit = xlNone
        End With
    End Sub
    Je suis passé de minimum = -150 à minimum = 0. Je suppose que c'est cette ligne :


  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par mickdu90
    Je suis passé de minimum = -150 à minimum = 0. Je suppose que c'est cette ligne :
    Chez moi j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        ActiveChart.Axes(xlValue).Select
        With ActiveChart.Axes(xlValue)
            .MinimumScaleIsAuto = True
            .MaximumScaleIsAuto = True
            .MinorUnitIsAuto = True
            .MajorUnitIsAuto = True
            .Crosses = xlCustom
            .CrossesAt = 0
            .ReversePlotOrder = False
            .ScaleType = xlLinear
        End With
    Pour enregistrer ta macro, tu lances l'enregistrement, tu sélectionnes l'axe lui-même -> Clic droit -> Format de l'axe -> Echelle
    Et tu modifies pour avoir un exemple...
    Tu dis

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Je dis que j'ai utilisé MinimumScale, j'ai utilisé aussi MaximumScale, et j'ai fais ca pour l'axe des X et l'axe des Y...

    Et ca fonctionne parfaitement

    Et je dis aussi que c'est le weekend, qu'ils ne me paient pas pour les heures sup' et que je poursuivrai leurs macros lundi matin pas avant

    J'en profiterai pour copier la macro qui fonctionne, toujours dans le but de servir aux autres, quelle générosité !

    Sur ce, bon weekend à toi, et merci encore de ton aide... Je reviens en force lundi !

  7. #7
    Membre Expert
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Billets dans le blog
    14
    Par défaut
    Bonjour
    Je ne sais pas si cela répond à ton soucis.
    Mais voici deux macros une pour les Y et une pour les X
    elles te permettent de définir le mini, le maxi et le pas pour chaques axes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub EchelleY()
    ActiveSheet.ChartObjects(1).Activate
    With ActiveChart.Axes(xlValue)
    .MinimumScale = Range("c1")
    .MaximumScale = Range("c2")
    .MajorUnit = Range("c3")
    End With
    Range("A1").Activate
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub EchelleX()
        ActiveSheet.ChartObjects(1).Activate
            With ActiveChart.Axes(xlCategory)
                .MinimumScale = Range("G1").Value
                .MaximumScale = Range("G2").Value
                .MajorUnit = Range("g3").Value
            End With
        Range("A1").Activate
     End Sub
    L'imagination est plus importante que le savoir.... A . Einstein. :pastaper:
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur :resolu:pour clore cette discussion.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Bonjour, merci de ton aide cb_60. Peux-tu me préciser l'utilité de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .MajorUnit = Range("c3")
    et de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .MajorUnit = Range("g3").Value
    ?

    Et également, pourquoi tu sélectionne la cellule A1 avant de quitter le programme,

    Merci

  9. #9
    Membre Expert
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Billets dans le blog
    14
    Par défaut
    Bonjour,
    .MajorUnit = Range("c3")
    et de
    Code :
    .MajorUnit = Range("g3").Value
    les deux lignes ci dessus permettent de choisir le pas entre le mini et le maxi.
    exemple
    mini=3
    maxi=30
    major unit =3
    tu auras les valeurs 6,9,12,15,18,21,24,27 entre ton mini et ton maxi
    Bruno
    L'imagination est plus importante que le savoir.... A . Einstein. :pastaper:
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur :resolu:pour clore cette discussion.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    D'accord

    Le code que tu m'a donné est celui que j'ai utilisé juste avant de partir en weekend Vendredi soir... Je n'ai juste pas modifié le pas du graphique, celui par défaut semble convenir.

    Si tu proposes le même code que moi, je pense être sur la bonne voie donc je le garde Le chef passe dans 30 minutes, on verra si ca lui convient !

    Bref 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
    Private Sub Worksheet_Activate()
     
     
     
    'Il va de soit que "SI - RESULTATS" ainsi que les cellules sont à adapter à chaque situation :P
     
    'Axe des abcisses (X)
     With ActiveChart.Axes(xlCategory)
            .MinimumScale = Sheets("SI - RESULTATS").Range("C17").Value - 100
            .MaximumScale = Sheets("SI - RESULTATS").Range("C22").Value + 100
        End With
     
    'Axe des ordonnées (Y)
    With ActiveChart.Axes(xlValue)
            .MinimumScale = Sheets("SI - RESULTATS").Range("B17").Value - 10
            .MaximumScale = Sheets("SI - RESULTATS").Range("B22").Value + 10
       End With
     
    End Sub

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/04/2018, 16h02
  2. [XL-2010] Problème Macro qui modifie l'échelle d'un graphique
    Par valou_43 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2015, 13h13
  3. Réponses: 4
    Dernier message: 03/04/2007, 10h38
  4. Comment modifier les axes d'un graphique
    Par AC88mm dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/04/2007, 10h34
  5. Réponses: 7
    Dernier message: 27/04/2006, 14h35

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