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
ChartObject
est 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.RGB
pour changer la couleur des barres des tâches. - Plage de dates : Vous pouvez ajuster
.Axes(xlValue).MinimumScale
et.Axes(xlValue).MaximumScale
pour refléter la période réelle de votre projet. - Unités :
.Axes(xlValue).MajorUnit
contrô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.