Créer un Graphique de Chronologie (Timeline) dans Excel avec VBA, Excel VBA

Créer un Graphique de Chronologie (Timeline) dans Excel avec VBA, Excel VBA
Un Graphique de Chronologie est une représentation visuelle d’événements au fil du temps, souvent utilisée pour la gestion de projets, l’analyse des données historiques ou le suivi des jalons. Dans Excel, vous pouvez créer un Graphique de Chronologie en utilisant un Graphique en Nuage de Points (Scatter Plot) avec des libellés de données.
Ce guide fournit :

  • Un code VBA détaillé pour créer un Graphique de Chronologie de manière dynamique.
  • Une explication détaillée de chaque étape pour mieux comprendre son fonctionnement.

Étapes pour créer un Graphique de Chronologie avec VBA
1. Préparer les données : Le graphique de chronologie est composé de deux colonnes : les dates (axe des X) et les événements (axe des Y).
2. Insérer un Graphique en Nuage de Points : Utiliser VBA pour créer un graphique en nuage de points.
3. Mettre en forme le Graphique : Ajuster les marqueurs, ajouter des libellés et configurer les axes correctement.
4. Améliorer la Visualisation : Personnaliser les couleurs, les lignes de grille et les libellés.
Code VBA pour le Graphique de Chronologie
Voici le code complet pour générer un Graphique de Chronologie dynamiquement.

Sub CreateTimelineChart()
    Dim ws As Worksheet
    Dim ch As ChartObject
    Dim rngX As Range, rngY As Range
    Dim lastRow As Long
    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez par le nom de votre feuille
    ' Trouver la dernière ligne avec des données
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ' Définir les plages de données (dates dans la colonne A, événements dans la colonne B)
    Set rngX = ws.Range("A2:A" & lastRow)
    Set rngY = ws.Range("B2:B" & lastRow)
    ' Supprimer tout graphique existant
    For Each ch In ws.ChartObjects
        ch.Delete
    Next ch
    ' Ajouter un nouveau graphique
    Set ch = ws.ChartObjects.Add(Left:=100, Width:=600, Top:=50, Height:=400)
    ' Définir le type de graphique en Nuage de Points
    With ch.Chart
        .ChartType = xlXYScatter
        .SetSourceData Source:=Union(rngX, rngY)
        ' Mettre en forme les axes
        With .Axes(xlCategory)
            .HasTitle = True
            .AxisTitle.Text = "Date"
            .TickLabels.Orientation = 45 ' Rotation des étiquettes pour une meilleure lisibilité
        End With
        With .Axes(xlValue)
            .HasTitle = True
            .AxisTitle.Text = "Événements"
            .MajorGridlines.Delete ' Supprimer les lignes de grille pour plus de clarté
        End With
        ' Ajouter des libellés de données
        Dim i As Integer
        For i = 1 To .SeriesCollection(1).Points.Count
            With .SeriesCollection(1).Points(i)
                .ApplyDataLabels xlDataLabelsShowValue
            End With
        Next i
        ' Personnaliser l'apparence du graphique
        .HasTitle = True
        .ChartTitle.Text = "Chronologie du Projet"
        .Legend.Delete
    End With
    ' Nettoyage
    Set ws = Nothing
    Set ch = Nothing
    Set rngX = Nothing
    Set rngY = Nothing
End Sub

Explication détaillée du code VBA
1. Identifier la Feuille et la Plage de Données
Set ws = ThisWorkbook.Sheets("Sheet1") ' Changez le nom de la feuille si nécessaire

  • Définit la feuille où les données sont stockées.

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    • Trouve la dernière ligne dans la colonne A pour ajuster dynamiquement la plage de données.
Set rngX = ws.Range("A2:A" & lastRow) 
Set rngY = ws.Range("B2:B" & lastRow)
  • Définit la plage de l’axe X (dates) et l’axe Y (événements).

2. Supprimer tout graphique existant

For Each ch In ws.ChartObjects
    ch.Delete
Next ch
  • Supprime tous les graphiques existants dans la feuille pour éviter les doublons.

3. Insérer un Nouveau Graphique
Set ch = ws.ChartObjects.Add(Left:=100, Width:=600, Top:=50, Height:=400)

    • Crée un nouveau graphique à une position spécifiée.
.ChartType = xlXYScatter 
.SetSourceData Source:=Union(rngX, rngY)
  • Définit le type de graphique en Nuage de Points (Scatter Plot) et affecte les données sources.

4. Mettre en forme les Axes

With .Axes(xlCategory)
    .HasTitle = True
    .AxisTitle.Text = "Date"
    .TickLabels.Orientation = 45 ' Rotation des étiquettes
End With
    • Étiquette l’axe des X comme « Date » et effectue une rotation des étiquettes pour une meilleure lisibilité.
With .Axes(xlValue) 
  .HasTitle = True 
  .AxisTitle.Text = "Événements" 
  .MajorGridlines.Delete ' Supprimer les lignes de grille 
End With
  • Étiquette l’axe des Y comme « Événements » et supprime les lignes de grille majeures.

5. Ajouter des Libellés de Données

Dim i As Integer
For i = 1 To .SeriesCollection(1).Points.Count
    With .SeriesCollection(1).Points(i)
        .ApplyDataLabels xlDataLabelsShowValue
    End With
Next i
  • Parcourt chaque point de données et ajoute des libellés pour afficher les noms des événements.

6. Personnaliser l’apparence du Graphique

.HasTitle = True
.ChartTitle.Text = "Chronologie du Projet"
.Legend.Delete
  • Définit le titre du graphique comme « Chronologie du Projet » et supprime la légende.

Comment utiliser ce code VBA
1. Entrez les données dans Sheet1 (ou changez le nom de la feuille dans le code) :
| A (Date) | B (Événement) |
|---------------|------------------|
| 01/01/2024 | Début du Projet |
| 15/02/2024 | Phase 1 terminée |
| 10/04/2024 | Début des tests |
| 20/06/2024 | Révision finale |
2. Ouvrez l’éditeur VBA (ALT + F11).
3. Insérez un nouveau module (Clic droit sur un module > Insérer > Module).
4. Collez le code VBA et exécutez CreateTimelineChart.
Personnalisations possibles

  • Changer les couleurs : Modifiez le style des marqueurs avec .MarkerStyle et .MarkerBackgroundColor.
  • Libellés d’événements : Utilisez DataLabels.Position = xlLabelPositionAbove pour mieux positionner les libellés.
  • Sélection dynamique de la feuille : Ajoutez une boîte de saisie (InputBox) pour permettre à l’utilisateur de sélectionner la feuille.

Conclusion
Ce code VBA crée facilement un Graphique de Chronologie dans Excel. Il lit dynamiquement les dates et événements, génère un nuage de points et met en forme le graphique pour une meilleure lisibilité.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x