Graphes, Array et dates en VBA

  • Initiateur de la discussion Initiateur de la discussion Slurp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour