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

Excel Discussion :

Echelle graphique variable [XL-2007]


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut Echelle graphique variable
    Bonjour,
    J'ai un ensemble de données historiques dont la date maximum est aujourd'hui; je voudrais faire un graphique histogramme qui se termine aujourd'hui.
    Si je mets comme valeur max la date d'aujourd'hui, demain mon graphique sera tronqué.
    Si je laisse en automatique l’abscisse max est beaucoup trop éloigné (2021 !).
    Est-il possible que la valeur maximum d'un axe soit une donnée variable provenant d'une feuille ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Tu as deux solutions; la première consiste à utiliser un tableau 2007 (Insertion, Tableau). Le tableau se dimensionne automatiquement quand tu ajoutes ou supprimes des données.
    La seconde, utilisable aussi avec des versions plus anciennes d'Excel, consiste à définir des plages dynamiques. Dans l'exemple, les abscisses sont en colonne A et les ordonnées en colonne B. Tu définis la plage des abscisses en cliquant sur Formules, Définir un nom; Donne un nom (PlageX dans l'exemple) et, dans "Fait référence à", tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)
    en admettant qu'il y ait un entête en A1, d'où le "-1".
    Tu fais de même pour les ordonnées (PlageY dans l'exemple). Dans le graphique, tu fais un clic droit dans le graphique et un clic sur "Sélectionner les données. Tu cliques sur "Modifier", côté ordonnées, et, à la place de la plage de cellules, tu mets :

    Adapte le nom de la feuille. Fais de même pour les abscisses. Ton graphique s'adaptera maintenant automatiquement aux dimensions de la plage de données.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    J'ai peut-être mal compris... Est-ce que tu veux dire que tu as des dates qui vont jusqu'en 2021 mais que tu souhaites ne voir figurer sur le graphique que les dates antérieures à aujourd'hui ?
    Dans ce cas, il faut définir les noms comme suit (pour PlageX) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$A$2;;;NB.SI(Feuil1!$A:$A;"<="&AUJOURDHUI())-1)
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil1!$B$2;;;NB.SI(Feuil1!$A:$A;"<="&AUJOURDHUI())-1)
    pour PlageY.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta réponse mais je pense que je me suis mal fait comprendre.
    J'ai un tableau de données reprenant une liste d'évènements avec leur date de début et leur date de fin, par exemple (la 3ème colonne est la différence entre les 2 dates pour pouvoir dessiner une barre de largeur correcte).

    29/05/1961 13/09/2014 19465

    Lorsque l'évènement n'est pas terminé, comme dans cet exemple, la date de fin est "aujourd'hui".
    Je voudrais faire un graphique de barres pour montrer l'enchaînement entre les évènements.

    Mon problème concerne uniquement la valeur max de la date sur ce graphique.
    Si je laisse Excel déterminer lui-même la valeur max de l'abscisse, le graphique ne s'arrête pas aujourd'hui mais en 2021.



    Si je mets comme valeur max "aujourd'hui" alors demain (et les jours suivant) le graphique ne sera plus correct, jusqu'à ce que je modifie manuellement cette valeur max.

    Comment faire pour que cette valeur max de l'abscisse soit effectivement la valeur max des données à savoir "aujourd'hui" ?


  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Est-ce que tu veux dire que tu as des dates qui vont jusqu'en 2021 mais que tu souhaites ne voir figurer sur le graphique que les dates antérieures à aujourd'hui ?
    Non, c'est le contraire : les données vont jusque aujourd'hui mais le graphique, avec "option d'axe - maximum - automatique" va jusqu'en 2021 (pourquoi 2021 ?).
    Et si je choisis "fixe" la date est évidemment fixe et demain cette date devient hier !

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Il est en effet anormal que tu aies une date limite de 2021. Est-ce que tu pourrais mettre un classeur en PJ afin qu'on puisse détecter l'anomalie ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    PS. 2021 s'explique puisque tu as spécifié une unité principale de 10 ans, que ta donnée maximale dépasse 2011. Excel affiche le graphique jusqu'à la graduation suivante : mai 2021. Utilise la méthode que je t'ai indiquée et regarde le classeur joint : les données vont jusqu'en 2021, mais les plages sont limitées à la date d'aujourd'hui :

    Herve_be.xlsx
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    Merci d'essayer de m'aider mais la méthode que tu donnes n'est pas applicable car les données ne sont pas dans une même colonne.
    Voici un exemple www.rudyv.be/Temp/Echelle.xlsx

    Les 4 premières colonnes contiennent les dates de début et de fin de 2 évènements Evènement 1 et Evènement 2.
    La colonne "1" contient la durée en jours de l'évènement 1, la colonne "Gap" l'intervalle entre la fin de l'évènement 1 et le début de l'évènement 2.
    La colonne "2" contient la durée de l'évènement 2.

    En laissant Excel définir l'échelle automatiquement (graphique de gauche) le graphique va de 1900 à 2029 !
    S'il affichait seulement les données jusque la graduation suivante l'axe devrait s'arrêter à 2019.
    Je voudrais obtenir le graphique de droite mais pour ça je dois définir l'axe avec des valeurs fixes, ce qui ne me dérange pas pour le début qui ne va pas changer, mais bien pour la fin que je voudrais toujours égale à aujourd'hui.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Je ne vois pas d'autre solution que d'utiliser une macro. Mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Sheets("Passions").ChartObjects(1).Chart.Axes(xlValue).MaximumScale = Date
    End Sub
    dans le module "ThisWorkbook". Si tu n'es pas familier avec les macros, dis-le.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #10
    Membre émérite
    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 : 64
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Points : 2 375
    Points
    2 375
    Billets dans le blog
    14
    Par défaut
    Bonsoir
    tu peux aussi ( en complément des infos de Daniel),
    mettre cette macro:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    With Sheets("Passions").ChartObjects(1).Chart.Axes(xlValue)
    .MinimumScale = Range("B5")
    .MaximumScale = Range("B6")
    End With
    End Sub
    faire un click droit sur l'onglet
    visualiser le code
    et coller cette macro
    Puis en B5 mettre cette formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATE(ANNEE(MIN(A2:D3));1;1)
    et en B6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATE(ANNEE(MAX(A2:D3));12;31)
    ou en B6

    Puis a chaque fois que tu feras un double click dans ta feuille, le graphique 1 se mettra à jour
    L'imagination est plus importante que le savoir.... A . Einstein.
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur pour clore cette discussion.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    Citation Envoyé par Daniel.C Voir le message
    Je ne vois pas d'autre solution que d'utiliser une macro. Mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Sheets("Passions").ChartObjects(1).Chart.Axes(xlValue).MaximumScale = Date
    End Sub
    dans le module "ThisWorkbook". Si tu n'es pas familier avec les macros, dis-le.
    Le fait que la solution passe par une macro ne me dérange pas.
    Je programme régulièrement en VB6, le problème avec VBA est que je n'ai jamais trouvé comment on utilise les références.
    Le seul petit détail est que dans l'exemple j'avais mis le graphique comme un objet sur la feuille alors qu'il occupe une feuille propre "Graphique" : par quoi faut-il remplacer Sheets("Passions").ChartObjects(1).Chart ?

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Graphique1").Axes(xlValue).MaximumScale = Date
    Remplace "Graphique1" par le nom de ta feuille.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    C'est exactement ce que je cherchais, merci !

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

Discussions similaires

  1. Echelle logarithmique variable
    Par n!co dans le forum Mathématiques
    Réponses: 3
    Dernier message: 24/11/2009, 11h32
  2. graphiques, variables Sum et temps d évaluation
    Par tony59 dans le forum Jasper
    Réponses: 6
    Dernier message: 20/05/2009, 17h01
  3. Echelle graphique en log / Suppression Onglet de type "Graphique"
    Par Xaladra dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/05/2008, 13h31
  4. Source de données graphique variable : macro?
    Par ginkas31 dans le forum Excel
    Réponses: 1
    Dernier message: 07/12/2007, 14h23
  5. Réponses: 2
    Dernier message: 10/08/2004, 17h35

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