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 :

Axe horizontal formatté en date sans dépendre d'une plage de donnée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut Axe horizontal formatté en date sans dépendre d'une plage de donnée
    Bonjour,

    Je souhaite tracer des graphiques xlXYScatterLines avec l'axe horizontal formatté en date, voire en mois. Cette option ne me semble pas disponible dans Excel. Mon idée constiste donc à supperposer un (ou plusieurs) graphique xlXYScatterLines usuel avec un graphique xlLine formatté en date ne contenant aucune courbe (du moins visible). Ça fonctionne très bien, si ce n'est que je souhaiterais améliorer le codage, sans nécessité de passer par une plage de donnée...

    Une autre idée serait de reconcstruire un axe articifiel en traçant chaque trait et valeur de l'axe les uns après les autres (mais j'ai un peu la flegme )

    Ci-dessous un exemple minimal :

    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
    46
    47
    48
    49
    50
    51
    52
    53
     
    Option Explicit
     
    '
    Sub test()
     
        Dim ws As Worksheet: Set ws = ActiveSheet
     
        With ws
     
            .Range("A1") = #1/1/2000#
            .Range("A2") = #12/31/2020#
    '        .Range("B1") = 0
    '        .Range("B2") = 0
     
            Dim sh As Shape: For Each sh In .Shapes
     
                sh.Delete
     
            Next sh
     
            With .Shapes.AddChart
     
                With .Chart
     
                    .ChartType = xlLine
     
                    With .Axes(xlCategory)
                        '.BaseUnit = xlMonths
                        .BaseUnit = xlYears
                        .TickLabels.NumberFormat = "yyyy"
                    End With
     
                    With .Axes(xlValue)
                        .MajorGridlines.Format.Line.Visible = msoFalse
                        .TickLabelPosition = xlNone
                        .MajorTickMark = xlNone
                    End With
     
                    'est-il possible de définir les données à partir d'un tableau et non d'une plage de donnée, afin de ne pas "polluer" le classeur inutilement ?
                    .SetSourceData Source:=ws.Range("A1:B2")
     
                    .FullSeriesCollection(.FullSeriesCollection.Count).Format.Line.Visible = msoFalse
     
                    .Legend.Delete
     
               End With
     
            End With
     
        End With
     
    End Sub
    Ps : un axe usuel ne peut pas convernir, car la largeur entre les graduation varie suivant le nombre de jours dans l'année et dans le mois (je ne souhaite pas faire d'approximation).

    Merci par avance !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Salut,

    Je m'étais déjà poser la question d'utiliser un tableau pour la méthode SetSourceData mais l'aide de microsoft définit uniquement un Range pour cette méthode.

    Je penses que ta seconde méthode est à creuser si tu n'as pas la flegme
    A+

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/06/2008, 11h04
  2. Réponses: 8
    Dernier message: 13/05/2008, 22h15
  3. Réponses: 17
    Dernier message: 18/07/2007, 15h46
  4. Rentrer la date du jour dans une base de données
    Par Guguslefun dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/06/2007, 14h05
  5. [VBA-E] tester la valeur d'une plage de données sans boucle
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/04/2007, 08h36

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