Graphes, Array et dates en VBA

Slurp

XLDnaute Nouveau
Bonjour à tous,

Je débute en Excel et VBA (du moins à niveau "professionnel") et suis confronté à un problème que je n'arrive pas à résoudre. J'utilise Excel 2010 sous Windows 7.

Je dois automatiser la création d'un graphe en VBA dont l'indice des abscisses seront des dates, et les ordonnées des entiers quelconques. Je crée donc ma macro de la manière suivante:

Code:
Sub makeGraph()

  'on crée le graphe
  With ActiveSheet.ChartObjects.Add _
            (Left:=100, Width:=375, Top:=75, Height:=225)
   .Chart.ChartType = xlXYScatterLines
   
   'on supprime les potentielles séries déjà présente
   Do Until .Chart.SeriesCollection.Count = 0
   .Chart.SeriesCollection(1).Delete
   Loop

    'on crée notre série
    .Chart.SeriesCollection.NewSeries

  'on ajoute les paramètres de la série
    .Chart.SeriesCollection(1).XValues = Array(CDate("24/06/2012"), CDate("27/06/2012"))
    .Chart.SeriesCollection(1).Values = Array(1, 2)
    .Chart.SeriesCollection(1).Name = "Première série"
    
    End With
End Sub

Concrètement, j'indique les valeurs XValues et Values via des Array. Pas de soucis pour les ordonnées, j'ai bien les valeurs que je veux. C'est pour les abscisses que ça pose problème: au lieu de m'afficher mes dates, il m'affiche un axe gradué entre 0 et 2.5.

Je n'arrive pas à comprendre pourquoi, j'en appelle donc à votre aide. Merci à tous !
 

MichD

XLDnaute Impliqué
Re : Graphes, Array et dates en VBA

Bonjour,

Reprenons les dates de ton tableau :


Dates : Graduation Date en numérique
25/06/12 -> 1 41085
26/06/12 -> 1,5 41086
27/06/12 -> 2 41087

Si tu veux remplacer la graduation actuelle par les dates en numérique
Tu modifies cette ligne de code comme ceci :

.SeriesCollection(1).XValues = _
Array(CLng(CDate("24/06/2012")), CLng(CDate("27/06/2012")))



La procédure suivante affiche un format date pour l'axe de X
Pour ce faire, on ajoute une ligne de code pour formater l'axe
.Axes(xlCategory).TickLabels.NumberFormatLocal = "jj/mm/aa"

VB:
Sub makeGraph()
 Dim K As Axis
  'on crée le graphe
   With ActiveSheet.ChartObjects.Add _
             (Left:=100, Width:=375, Top:=75, Height:=225)
    .Chart.ChartType = xlXYScatterLines
    
    'on supprime les potentielles séries déjà présente
    Do Until .Chart.SeriesCollection.Count = 0
    .Chart.SeriesCollection(1).Delete
    Loop
 
    'on crée notre série
     .Chart.SeriesCollection.NewSeries
 
  'on ajoute les paramètres de la série
     With .Chart
        .SeriesCollection(1).XValues = _
            Array(CLng(CDate("24/06/2012")), CLng(CDate("27/06/2012")))
        'Formate l'axe de valeurs numériques en date (affichage)
        .Axes(xlCategory).TickLabels.NumberFormatLocal = "jj/mm/aa"
        .SeriesCollection(1).Values = Array(1, 2)
        .SeriesCollection(1).Name = "Première série"
    End With
    End With
 End Sub
 

Discussions similaires

Réponses
0
Affichages
154

Statistiques des forums

Discussions
312 270
Messages
2 086 678
Membres
103 370
dernier inscrit
pasval