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 :
- Créer une feuille de calcul avec les données.
- Écrire le code VBA pour automatiser la décision.
- 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
- Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Dans l’éditeur, allez dans Insertion > Module pour créer un nouveau module.
- Copiez et collez le code VBA ci-dessus dans le module.
- Fermez l’éditeur VBA et retournez dans Excel.
- 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.