Automatisez les processus de détection des anomalies de données, Excel VBA
L’automatisation de la détection des anomalies dans les données via VBA peut se faire de différentes manières en fonction de la nature des données et des critères d’anomalie. Pour cet exemple, imaginons un scénario où nous avons une colonne de valeurs numériques et nous souhaitons identifier les anomalies potentielles en fonction de certaines règles statistiques, comme les valeurs qui sont plus élevées ou plus basses que 3 fois l’écart type de la moyenne (ce qui peut être un critère pour détecter des valeurs extrêmes).
Voici un exemple de code VBA pour cela :
1. Structure des données
Supposons que les données sont dans la colonne A à partir de la ligne 2 (A2
) et que nous souhaitons détecter les anomalies dans cette plage de données.
2. Code VBA pour détecter les anomalies :
Sub DetecterAnomalies()
Dim ws As Worksheet
Dim lastRow As Long
Dim dataRange As Range
Dim value As Double
Dim mean As Double
Dim stdev As Double
Dim thresholdUpper As Double
Dim thresholdLower As Double
Dim cell As Range
' Référence à la feuille active
Set ws = ThisWorkbook.Sheets("Feuille1")
' Définir la plage de données (colonne A)
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set dataRange = ws.Range("A2:A" & lastRow)
' Calcul de la moyenne et de l'écart-type des données
mean = Application.WorksheetFunction.Average(dataRange)
stdev = Application.WorksheetFunction.StDev(dataRange)
' Définir les seuils d'anomalie : ici plus de 3 écarts-types au-dessus ou en dessous de la moyenne
thresholdUpper = mean + 3 * stdev
thresholdLower = mean - 3 * stdev
' Parcourir chaque cellule de la plage de données pour détecter les anomalies
For Each cell In dataRange
value = cell.Value
' Vérifier si la valeur est une anomalie (au-dessus ou en dessous des seuils)
If value > thresholdUpper Or value < thresholdLower Then
' Marquer la cellule comme anomalie (par exemple, en rouge)
cell.Interior.Color = RGB(255, 0, 0) ' rouge
cell.Offset(0, 1).Value = "Anomalie" ' Marquer à côté de la cellule
Else
' Si la valeur n'est pas une anomalie, pas de changement
cell.Interior.ColorIndex = -4142 ' Effacer la couleur
cell.Offset(0, 1).Value = ""
End If
Next cell
' Afficher un message si le processus est terminé
MsgBox "Détection des anomalies terminée !", vbInformation
End Sub
Explication du code :
1. Définition des variables :
- ws: Référence à la feuille de calcul active où se trouvent les données.
- lastRow: Variable qui contient la dernière ligne avec des données dans la colonne A.
- dataRange: Plage de données contenant les valeurs numériques à analyser (ici, A2).
- mean: Moyenne des valeurs de la plage.
- stdev: Écart type des valeurs de la plage.
- thresholdUpper et thresholdLower: Seuils d’anomalie basés sur la moyenne ± 3 écarts-types.
2. Calcul de la moyenne et de l’écart-type :
- Utilisation de la fonction Application.WorksheetFunction.Average pour calculer la moyenne des données.
- Utilisation de la fonction Application.WorksheetFunction.StDev pour calculer l’écart-type.
3. Détection des anomalies :
- Le code parcourt chaque cellule de la plage de données.
- Pour chaque valeur, il vérifie si elle est au-dessus du seuil supérieur ou en dessous du seuil inférieur (définis comme moyenne ± 3 écarts-types).
- Si la valeur est considérée comme une anomalie, la cellule est coloriée en rouge et une annotation « Anomalie » est ajoutée dans la colonne B (à côté de la valeur).
- Si la valeur ne dépasse pas les seuils, la couleur est réinitialisée et la colonne B reste vide.
4. Message de fin :
À la fin du processus, un message s’affiche pour indiquer que la détection des anomalies est terminée.
3. Comment utiliser ce code ?
1. Ouvrir l’éditeur VBA :
Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
Dans l’éditeur, allez dans Insertion > Module pour insérer un module.
2. Copier et coller le code :
Copiez le code ci-dessus et collez-le dans le module.
3. Exécuter le code :
Appuyez sur F5 pour exécuter le code et détecter les anomalies dans la colonne A de la feuille active.
4. Personnalisation :
• Seuils d’anomalie : Vous pouvez ajuster les seuils (ici définis comme 3 écarts-types) en modifiant les valeurs de thresholdUpper et thresholdLower.
• Plage de données : Si vos données ne se trouvent pas dans la colonne A ou s’étendent sur plusieurs colonnes, vous pouvez modifier la plage dataRange.
• Couleur et actions sur les anomalies : Vous pouvez changer la couleur de surbrillance ou ajouter d’autres actions, comme envoyer un e-mail, enregistrer les résultats dans une autre feuille, etc.
Ce code est un bon point de départ pour l’automatisation de la détection des anomalies dans les données en utilisant VBA. Vous pouvez l’adapter pour différentes configurations ou critères d’anomalie.