Créer un diagramme de Gantt, Excel VBA
Voici un code VBA détaillé pour créer un diagramme de Gantt dans Excel, accompagné de ses explications.
Étapes pour créer un diagramme de Gantt :
1. Préparer les données : Vous devez disposer d’un tableau avec les tâches, les dates de début et de fin.
2. Initialiser le graphique : Créer un graphique vide ou utiliser un graphique en barres empilées pour représenter le diagramme de Gantt.
3. Définir les plages de données : Définir les plages de données pour les tâches, les dates de début et de fin.
4. Dessiner les barres de Gantt : Utiliser un graphique en barres empilées pour représenter la durée de chaque tâche.
5. Personnaliser le graphique : Appliquer des couleurs, des étiquettes et ajuster les axes pour une meilleure visualisation.
Exemple de tableau de données :
Supposons que vos données soient structurées comme suit dans Excel :
| Nom de la tâche | Date de début | Date de fin |
| Tâche 1 | 01/01/2025 | 01/05/2025 |
| Tâche 2 | 01/06/2025 | 01/10/2025 |
| Tâche 3 | 01/11/2025 | 01/15/2025 |
Code VBA pour le Diagramme de Gantt :
Sub CreerDiagrammeGantt()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim rng As Range
Dim plageDebutTache As Range
Dim plageFinTache As Range
Dim donneesChart As Range
Dim nbLignes As Integer
Dim dateDebut As Date
Dim dateFin As Date
Dim i As Integer
' Définir l'objet feuille de calcul
Set ws = ThisWorkbook.Sheets("Feuille1")
' Trouver le nombre de lignes des tâches dans les données
nbLignes = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row - 1
' Définir les plages de données
Set plageDebutTache = ws.Range("B2:B" & nbLignes + 1) ' Date de début
Set plageFinTache = ws.Range("C2:C" & nbLignes + 1) ' Date de fin
' Créer un nouvel objet graphique
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=600, Top:=50, Height:=300)
With chartObj.Chart
.ChartType = xlBarStacked
' Définir les données du graphique
Set donneesChart = ws.Range("A1:C" & nbLignes + 1)
' Ajouter les données du graphique
.SetSourceData Source:=donneesChart
' Personnaliser le graphique
.HasTitle = True
.ChartTitle.Text = "Diagramme de Gantt"
' Définir les titres des axes et formater les axes
.Axes(xlCategory).CategoryNames = plageDebutTache
.Axes(xlCategory).TickLabels.Orientation = xlUpward
' Formater les séries
For i = 1 To .SeriesCollection.Count
.SeriesCollection(i).Format.Fill.Solid
.SeriesCollection(i).Format.Fill.ForeColor.RGB = RGB(255, 102, 102) ' Définir la couleur des barres
Next i
' Ajouter un format personnalisé pour ressembler à un diagramme de Gantt
.Axes(xlValue).MinimumScale = DateValue("01/01/2025") ' Définir la date de début du diagramme
.Axes(xlValue).MaximumScale = DateValue("01/20/2025") ' Définir la date de fin du diagramme
.Axes(xlValue).MajorUnit = 1 ' Unité des axes (1 jour)
.Axes(xlValue).MinorUnit = 1
End With
' Créer une plage dynamique pour le calcul de la durée des tâches
For i = 2 To nbLignes + 1
dateDebut = ws.Cells(i, 2).Value
dateFin = ws.Cells(i, 3).Value
' Créer des colonnes auxiliaires pour les différences de dates de début et de fin
ws.Cells(i, 4).Value = DateDiff("d", dateDebut, dateFin) ' Durée en jours
Next i
MsgBox "Diagramme de Gantt créé avec succès !", vbInformation
End Sub
Explication du Code :
1. Configuration de la feuille de calcul : Le code commence par définir la feuille de calcul où le diagramme de Gantt sera créé (ws = ThisWorkbook.Sheets("Feuille1")).
2. Plages de données : Les plages pour les dates de début et de fin des tâches sont définies (plageDebutTache, plageFinTache).
3. Création du graphique :
- Un objet
ChartObjectest créé sur la feuille. - Le type de graphique est défini sur
xlBarStacked(graphique en barres empilées), ce qui permet d’afficher la durée de chaque tâche sous forme de barres.
4. Source de données du graphique : La plage des données (noms des tâches, dates de début et de fin) est définie pour le graphique (donneesChart = ws.Range("A1:C" & nbLignes + 1)).
5. Personnalisation du graphique :
- Le titre du graphique est défini.
- L’axe des catégories (tâches) est personnalisé pour afficher les noms des tâches avec un texte orienté vers le haut.
- L’axe des valeurs (dates) est formaté pour afficher des jours, avec une échelle ajustée aux dates de début et de fin du projet.
6. Colonnes auxiliaires pour la durée des tâches : Une colonne auxiliaire est ajoutée pour calculer la durée de chaque tâche en jours (différence entre la date de début et de fin).
7. Format des barres : Chaque barre du diagramme de Gantt est colorée, et vous pouvez modifier cette couleur selon vos préférences.
Personnalisation du graphique :
- Couleurs des tâches : Vous pouvez modifier la ligne
.SeriesCollection(i).Format.Fill.ForeColor.RGBpour changer la couleur des barres des tâches. - Plage de dates : Vous pouvez ajuster
.Axes(xlValue).MinimumScaleet.Axes(xlValue).MaximumScalepour refléter la période réelle de votre projet. - Unités :
.Axes(xlValue).MajorUnitcontrôle l’unité de l’axe (par exemple, 1 pour les jours, 7 pour les semaines).
Conclusion :
Ce code VBA permet d’automatiser la création d’un diagramme de Gantt dans Excel et vous aide à visualiser les tâches et leurs durées de manière dynamique. En ajustant les dates de début et de fin, vous pouvez rapidement générer un diagramme de Gantt mis à jour pour différents projets.