Automatiser les processus de prise de décision, Excel VBA

Automatiser les processus de prise de décision dans Excel à l’aide de VBA (Visual Basic for Applications) peut être un moyen très puissant d’optimiser les tâches répétitives. Ce type d’automatisation peut inclure des processus de sélection, d’analyse et d’exécution basés sur des critères prédéfinis. Voici un exemple détaillé de code VBA qui vous permettra d’automatiser un processus de prise de décision.

Contexte

Imaginons un scénario où nous avons une liste de projets, et pour chaque projet, nous avons plusieurs critères comme le coût, le risque et l’impact. La décision finale de « accepter » ou « rejeter » le projet sera prise en fonction de ces critères. Si le coût est inférieur à une certaine valeur, le risque est faible et l’impact est élevé, alors le projet est accepté. Sinon, il est rejeté.

Étapes à suivre :

  1. Créer une feuille de calcul avec les données.
  2. Écrire le code VBA pour automatiser la décision.
  3. Afficher un message ou une notification de la décision.

Création de la feuille de calcul

Imaginons une feuille de calcul appelée Projets avec les colonnes suivantes :

A B C D E
Projet Coût (€) Risque Impact Décision
Projet 1 100000 Faible Élevé ?
Projet 2 150000 Élevé Moyen ?
Projet 3 50000 Moyen Élevé ?

Dans cet exemple :

  • Colonne A : Nom du projet
  • Colonne B : Coût en €
  • Colonne C : Niveau de risque (Faible, Moyen, Élevé)
  • Colonne D : Niveau d’impact (Faible, Moyen, Élevé)
  • Colonne E : La décision finale (Accepter ou Rejeter), qui sera automatisée par le code VBA.

Code VBA pour automatiser la prise de décision

Voici le code VBA qui analyse chaque projet en fonction des critères de coût, de risque et d’impact, puis prend la décision correspondante.

Code VBA

Sub AutomatiserDecision()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim cout As Double
    Dim risque As String
    Dim impact As String
    Dim decision As String
    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("Projets")
    ' Trouver la dernière ligne de la feuille (en fonction de la colonne A)
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Boucle pour analyser chaque projet
    For i = 2 To lastRow ' Commence à la ligne 2 pour ignorer les en-têtes
        cout = ws.Cells(i, 2).Value ' Coût du projet
        risque = ws.Cells(i, 3).Value ' Risque du projet
        impact = ws.Cells(i, 4).Value ' Impact du projet
        ' Logique de décision
        If cout < 120000 And risque = "Faible" And impact = "Élevé" Then
            decision = "Accepter"
        ElseIf cout >= 120000 And risque = "Élevé" Then
            decision = "Rejeter"
        ElseIf cout < 80000 And impact = "Moyen" Then
            decision = "Rejeter"
        Else
            decision = "Accepter"
        End If
             ' Affecter la décision à la colonne E
        ws.Cells(i, 5).Value = decision
    Next i
    ' Message d'alerte lorsque le processus est terminé
    MsgBox "Le processus de décision a été complété.", vbInformation, "Automatisation Terminée"
End Sub

Explication du code

Déclaration des variables

Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cout As Double
Dim risque As String
Dim impact As String
Dim decision As String
  • ws : Référence à la feuille de calcul contenant les données.
  • lastRow : La dernière ligne utilisée dans la feuille de calcul pour boucler sur tous les projets.
  • i : Index utilisé pour parcourir les lignes.
  • cout, risque, impact : Variables utilisées pour stocker les valeurs des critères de chaque projet.
  • decision : Variable pour stocker la décision prise pour chaque projet.

Trouver la dernière ligne

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  • Cette ligne permet de trouver la dernière ligne contenant des données dans la colonne A (en supposant que chaque projet a un nom dans cette colonne).

Boucle de traitement des projets

For i = 2 To lastRow
  • On commence à la ligne 2 pour éviter d’inclure les en-têtes dans la prise de décision.

Lecture des valeurs des critères

cout = ws.Cells(i, 2).Value
risque = ws.Cells(i, 3).Value
impact = ws.Cells(i, 4).Value
  • Ces lignes récupèrent les valeurs du coût, du risque et de l’impact pour chaque projet.

Prise de décision

If cout < 120000 And risque = "Faible" And impact = "Élevé" Then
    decision = "Accepter"
ElseIf cout >= 120000 And risque = "Élevé" Then
    decision = "Rejeter"
ElseIf cout < 80000 And impact = "Moyen" Then
    decision = "Rejeter"
Else
    decision = "Accepter"
End If
  • Cette section contient la logique de prise de décision en fonction des critères. Par exemple :
    • Si le coût est inférieur à 120 000 €, le risque est faible et l’impact est élevé, le projet est accepté.
    • Si le coût est supérieur ou égal à 120 000 € et que le risque est élevé, le projet est rejeté.
    • D’autres conditions peuvent être ajoutées pour plus de flexibilité.

Affecter la décision à la feuille de calcul

ws.Cells(i, 5).Value = decision
  • Cette ligne place la décision dans la colonne E (la colonne des décisions) pour chaque projet.

Message de fin

MsgBox « Le processus de décision a été complété. », vbInformation, « Automatisation Terminée »

  • Un message pop-up s’affiche pour informer l’utilisateur que l’automatisation a été terminée.

Exécution du code

  1. Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
  2. Dans l’éditeur, allez dans Insertion > Module pour créer un nouveau module.
  3. Copiez et collez le code VBA ci-dessus dans le module.
  4. Fermez l’éditeur VBA et retournez dans Excel.
  5. Appuyez sur Alt + F8, sélectionnez la macro AutomatiserDecision, puis cliquez sur Exécuter.

Conclusion

Ce code VBA automatise le processus de prise de décision en fonction de critères prédéfinis dans une feuille Excel. Vous pouvez l’adapter à d’autres processus de décision en fonction des critères qui vous concernent. Le code peut être amélioré avec plus de conditions ou une logique plus complexe selon les besoins spécifiques de votre projet.

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