Créer un diagramme de Gantt, Excel VBA

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.

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