Développer un outil de gestion de projet personnalisé, Excel VBA (Visual Basic for Applications)

Développer un outil de gestion de projet personnalisé, Excel VBA (Visual Basic for Applications)
Le code fourni comprend plusieurs éléments clés que vous pourriez avoir besoin, tels que la gestion des tâches, le suivi des délais, et la génération de rapports.
Objectif :
Nous allons créer un outil de gestion de projet avec les fonctionnalités suivantes :
1. Gestion des tâches – Suivre les tâches, leur statut, leurs délais, et les personnes assignées.
2. Chronologie et diagramme de Gantt – Afficher visuellement le planning du projet et l’avancement des tâches.
3. Génération de rapports – Créer des rapports comme le statut d’avancement des tâches, les tâches en retard, etc.
4. Automatisation – Utiliser VBA pour mettre à jour l’outil automatiquement en fonction des entrées de l’utilisateur.
Fonctionnalités :

  • Une liste de tâches (pour stocker les noms des tâches, les dates de début et de fin, les assignés, les statuts, etc.)
  • Un diagramme de Gantt (pour visualiser les tâches sur un planning)
  • Génération de rapports (pour résumer l’avancement des tâches, les tâches en retard, etc.)
  • Automatisation (par exemple, calcul automatique du pourcentage de progression des tâches)

1. Créer une liste de tâches dans Excel
Commencez par créer la structure de base pour stocker les informations des tâches.
Dans la première feuille (nommez-la « TaskList »), créez les colonnes suivantes :

  • A1 : ID de tâche
  • B1 : Nom de la tâche
  • C1 : Assigné (Personne responsable)
  • D1 : Date de début
  • E1 : Date de fin
  • F1 : Statut (Non commencé, En cours, Terminé)
  • G1 : Pourcentage d’avancement
  • H1 : Remarques

Dans la deuxième feuille (nommez-la « GanttChart »), nous allons créer le diagramme de Gantt pour afficher visuellement le planning.
2. Code VBA pour la gestion des tâches
Voici le code VBA pour ajouter une nouvelle tâche dans la liste.
Code pour ajouter une nouvelle tâche :

Sub AddNewTask()
    Dim taskId As Integer
    Dim taskName As String
    Dim assignee As String
    Dim startDate As Date
    Dim endDate As Date
    Dim status As String
    Dim completion As Integer
    Dim remarks As String
    ' Demander à l'utilisateur les informations sur la tâche
    taskId = InputBox("Entrez l'ID de la tâche", "Nouvelle tâche")
    taskName = InputBox("Entrez le nom de la tâche", "Nouvelle tâche")
    assignee = InputBox("Entrez le nom de la personne assignée", "Nouvelle tâche")
    startDate = CDate(InputBox("Entrez la date de début (JJ/MM/AAAA)", "Nouvelle tâche"))
    endDate = CDate(InputBox("Entrez la date de fin (JJ/MM/AAAA)", "Nouvelle tâche"))
    status = InputBox("Entrez le statut (Non commencé, En cours, Terminé)", "Nouvelle tâche")
    completion = InputBox("Entrez le pourcentage d'avancement (0-100)", "Nouvelle tâche")
    remarks = InputBox("Entrez des remarques", "Nouvelle tâche")
    ' Trouver la prochaine ligne vide dans la feuille TaskList
    Dim lastRow As Long
    lastRow = Sheets("TaskList").Cells(Sheets("TaskList").Rows.Count, 1).End(xlUp).Row + 1
    ' Insérer les données dans la feuille TaskList
    Sheets("TaskList").Cells(lastRow, 1).Value = taskId
    Sheets("TaskList").Cells(lastRow, 2).Value = taskName
    Sheets("TaskList").Cells(lastRow, 3).Value = assignee
    Sheets("TaskList").Cells(lastRow, 4).Value = startDate
    Sheets("TaskList").Cells(lastRow, 5).Value = endDate
    Sheets("TaskList").Cells(lastRow, 6).Value = status
    Sheets("TaskList").Cells(lastRow, 7).Value = completion
    Sheets("TaskList").Cells(lastRow, 8).Value = remarks
End Sub

Explication :

  • La procédure AddNewTask utilise la fonction InputBox pour demander à l’utilisateur de fournir les informations nécessaires à la création d’une tâche : ID de la tâche, nom, assignee, dates de début et de fin, statut, pourcentage d’avancement et remarques.
  • Ensuite, elle trouve la prochaine ligne vide dans la feuille « TaskList » et insère les données dans les colonnes appropriées.

3. Code VBA pour la mise à jour du statut d’une tâche
Nous allons maintenant créer une macro permettant de mettre à jour le statut et le pourcentage d’avancement d’une tâche.
Code pour mettre à jour le statut d’une tâche :

Sub UpdateTaskStatus()
    Dim taskId As Integer
    Dim status As String
    Dim completion As Integer
    Dim row As Long
    ' Demander à l'utilisateur l'ID de la tâche à mettre à jour
    taskId = InputBox("Entrez l'ID de la tâche à mettre à jour", "Mettre à jour le statut")
    ' Trouver la tâche dans la feuille TaskList
    row = Application.Match(taskId, Sheets("TaskList").Range("A:A"), 0)
    If Not IsError(row) Then
        ' Demander à l'utilisateur le nouveau statut et le pourcentage d'avancement
        status = InputBox("Entrez le nouveau statut (Non commencé, En cours, Terminé)", "Mettre à jour le statut")
        completion = InputBox("Entrez le nouveau pourcentage d'avancement (0-100)", "Mettre à jour le statut")
        ' Mettre à jour les informations de la tâche dans la feuille TaskList
        Sheets("TaskList").Cells(row, 6).Value = status
        Sheets("TaskList").Cells(row, 7).Value = completion
    Else
        MsgBox "ID de tâche non trouvé !"
    End If
End Sub

Explication :

  • La procédure UpdateTaskStatus demande à l’utilisateur l’ID d’une tâche, puis recherche cette tâche dans la feuille « TaskList ».
  • Si la tâche est trouvée, l’utilisateur peut mettre à jour le statut et le pourcentage d’avancement de la tâche.

4. Générer un Diagramme de Gantt
Le diagramme de Gantt permettra d’afficher visuellement l’avancement des tâches en fonction de leur date de début et de fin.
Code pour générer le diagramme de Gantt :

Sub GenerateGanttChart()
    Dim startDate As Date
    Dim endDate As Date
    Dim taskName As String
    Dim row As Long
    Dim col As Long
    Dim currentDate As Date
    ' Définir les dates de début et de fin du projet
    Dim projectStartDate As Date
    Dim projectEndDate As Date
    projectStartDate = Application.Min(Sheets("TaskList").Range("D:D"))
    projectEndDate = Application.Max(Sheets("TaskList").Range("E:E"))
    ' Créer les entêtes du diagramme de Gantt
    Sheets("GanttChart").Cells(1, 1).Value = "Nom de la tâche"
    For col = 2 To (projectEndDate - projectStartDate + 2)
        Sheets("GanttChart").Cells(1, col).Value = projectStartDate + col - 2
    Next col
    ' Remplir le diagramme de Gantt avec les données des tâches
    For row = 2 To Sheets("TaskList").Cells(Sheets("TaskList").Rows.Count, 1).End(xlUp).Row
        taskName = Sheets("TaskList").Cells(row, 2).Value
        startDate = Sheets("TaskList").Cells(row, 4).Value
        endDate = Sheets("TaskList").Cells(row, 5).Value
        Sheets("GanttChart").Cells(row, 1).Value = taskName
        ' Colorier les cellules du diagramme de Gantt
        For col = 2 To (projectEndDate - projectStartDate + 2)
            currentDate = projectStartDate + col - 2
            If currentDate >= startDate And currentDate <= endDate Then
                Sheets("GanttChart").Cells(row, col).Interior.Color = RGB(0, 102, 204)
            End If
        Next col
    Next row
End Sub

Explication :

  • La procédure GenerateGanttChart génère un diagramme de Gantt dans la feuille « GanttChart ».
  • Elle détermine les dates de début et de fin du projet, puis elle remplit les colonnes avec les dates correspondantes.
  • Les cellules sont coloriées en bleu pour chaque tâche en fonction de sa période d’activité.

5. Générer un Rapport de Projet
Enfin, nous allons créer un rapport simple pour afficher les tâches en retard et leur avancement.
Code pour générer un rapport :

Sub GenerateProjectReport()
    Dim lastRow As Long
    Dim reportRow As Long
    Dim status As String
    Dim taskName As String
    Dim completion As Integer
    Dim endDate As Date
    lastRow = Sheets("TaskList").Cells(Sheets("TaskList").Rows.Count, 1).End(xlUp).Row
    reportRow = 2
    ' Créer les entêtes du rapport
    Sheets("Report").Cells(1, 1).Value = "Nom de la tâche"
    Sheets("Report").Cells(1, 2).Value = "Statut"
    Sheets("Report").Cells(1, 3).Value = "Avancement (%)"
    Sheets("Report").Cells(1, 4).Value = "En retard ?"
    ' Parcourir les tâches et générer le rapport
    For row = 2 To lastRow
        taskName = Sheets("TaskList").Cells(row, 2).Value
        status = Sheets("TaskList").Cells(row, 6).Value
        completion = Sheets("TaskList").Cells(row, 7).Value
        endDate = Sheets("TaskList").Cells(row, 5).Value
        Sheets("Report").Cells(reportRow, 1).Value = taskName
        Sheets("Report").Cells(reportRow, 2).Value = status
        Sheets("Report").Cells(reportRow, 3).Value = completion
        If endDate < Date And status <> "Terminé" Then
            Sheets("Report").Cells(reportRow, 4).Value = "Oui"
        Else
            Sheets("Report").Cells(reportRow, 4).Value = "Non"
        End If
        reportRow = reportRow + 1
    Next row
End Sub

Explication :

  • La procédure GenerateProjectReport génère un rapport affichant le nom des tâches, leur statut, leur pourcentage d’avancement, et si elles sont en retard par rapport à leur date de fin.

Conclusion :
Cet outil de gestion de projet personnalisé en Excel VBA permet de :

  • Gérer les tâches (ajouter et mettre à jour).
  • Visualiser un diagramme de Gantt.
  • Générer des rapports sur l’avancement des tâches.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x