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é.