Implémenter une solution de profilage de données personnalisée, Excel VBA

Implémenter une solution de profilage de données personnalisée, Excel VBA

Voici un guide étape par étape pour implémenter une solution de profilage de données personnalisée avec VBA.
Étape 1 : Préparation des données
Avant de commencer à écrire du code VBA, assurez-vous que les données que vous souhaitez analyser sont bien préparées. Les données doivent être structurées de manière à être faciles à traiter.
1. Organisation des données :

  • Les données doivent être organisées en colonnes avec des en-têtes. Chaque colonne représente une variable ou un champ, et chaque ligne représente une observation ou un enregistrement.
  • Assurez-vous qu’il n’y a pas de cellules fusionnées, car cela pourrait interférer avec le traitement des données.
  • Nettoyez les données : supprimez ou gérez les valeurs manquantes, les valeurs aberrantes et les doublons.

2. Chargement des données dans Excel :

  • Vos données peuvent provenir de diverses sources comme des fichiers CSV, des bases de données ou d’autres classeurs Excel. Assurez-vous que les données sont correctement importées dans Excel pour être traitées.
  • Cela peut être fait manuellement ou via des fonctions Excel comme Obtenir et Transformer (Power Query) pour charger des données depuis des sources externes.

Étape 2 : Ouvrir Excel et accéder à l’éditeur VBA
Pour écrire et exécuter le code VBA, vous devez d’abord accéder à l’éditeur VBA dans Excel :
1. Ouvrir Excel :

  • Lancez Excel et ouvrez le classeur contenant les données que vous souhaitez profiler.

2. Accéder à l’éditeur VBA :

  • Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA. C’est là que vous écrirez votre code personnalisé pour effectuer les tâches de profilage des données.
  • Dans l’éditeur VBA, vous pouvez créer un nouveau module pour y placer votre code. Pour ce faire, faites un clic droit sur « VBAProject (NomDeVotreClasseur) » dans le panneau de gauche, sélectionnez Insérer puis Module.

Étape 3 : Écrire le code VBA
Maintenant que vous êtes dans l’éditeur VBA, vous pouvez commencer à écrire le code pour votre solution de profilage des données. Voici un exemple de structure de code pour le profilage des données.
Que fera le code ?

  • Il générera un résumé des données.
  • Il comptera le nombre total de lignes et de colonnes.
  • Il vérifiera les valeurs manquantes.
  • Il fournira des statistiques de base pour les colonnes numériques telles que la moyenne, le minimum, le maximum et l’écart-type.
  • Il affichera les résultats dans une nouvelle feuille de calcul.

Exemple de code VBA :

Sub ProfilageDesDonnées()
    Dim ws As Worksheet
    Dim resultWs As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long
    Dim totalRows As Long, totalCols As Long
    Dim cell As Range
    Dim isEmpty As Boolean
    Dim sum As Double, count As Long
    Dim minVal As Double, maxVal As Double, avg As Double, stdDev As Double
    ' Définir la feuille de calcul contenant les données
    Set ws = ThisWorkbook.Sheets("Data") ' Remplacez par le nom de votre feuille
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    ' Créer une nouvelle feuille pour les résultats
    Set resultWs = ThisWorkbook.Sheets.Add
    resultWs.Name = "Résultats Profilage"
    ' Ajouter les en-têtes pour le rapport de profilage
    resultWs.Cells(1, 1).Value = "Colonne"
    resultWs.Cells(1, 2).Value = "Total des lignes"
    resultWs.Cells(1, 3).Value = "Valeurs manquantes"
    resultWs.Cells(1, 4).Value = "Valeur minimale"
    resultWs.Cells(1, 5).Value = "Valeur maximale"
    resultWs.Cells(1, 6).Value = "Moyenne"
    resultWs.Cells(1, 7).Value = "Écart-type"
    ' Parcourir chaque colonne
    For j = 1 To lastCol
        totalRows = lastRow - 1 ' Exclure la ligne des en-têtes
        count = 0
        sum = 0
        minVal = 1E+30 ' Grande valeur initiale
        maxVal = -1E+30 ' Petite valeur initiale
        isEmpty = False
        ' Parcourir chaque ligne de la colonne actuelle
        For i = 2 To lastRow ' Commencer à partir de la ligne 2 (en supposant que la ligne 1 contient les en-têtes)
            Set cell = ws.Cells(i, j)
            ' Vérifier les valeurs vides ou manquantes
            If IsEmpty(cell.Value) Or IsError(cell.Value) Then
                count = count + 1
                isEmpty = True
            Else
                ' Collecter les données pour les colonnes numériques
                If IsNumeric(cell.Value) Then
                    sum = sum + cell.Value
                    If cell.Value < minVal Then minVal = cell.Value If cell.Value > maxVal Then maxVal = cell.Value
                End If
            End If
        Next i
        ' Calculer les statistiques si des données sont présentes dans la colonne
        If Not isEmpty Then
            avg = sum / (totalRows - count)
            stdDev = Application.WorksheetFunction.StDev(ws.Range(ws.Cells(2, j), ws.Cells(lastRow, j)))
        Else
            avg = "N/A"
            stdDev = "N/A"
        End If
        ' Écrire les résultats du profilage dans la feuille des résultats
        resultWs.Cells(j + 1, 1).Value = ws.Cells(1, j).Value
        resultWs.Cells(j + 1, 2).Value = totalRows
        resultWs.Cells(j + 1, 3).Value = count
        resultWs.Cells(j + 1, 4).Value = minVal
        resultWs.Cells(j + 1, 5).Value = maxVal
        resultWs.Cells(j + 1, 6).Value = avg
        resultWs.Cells(j + 1, 7).Value = stdDev
    Next j
    ' Ajuster automatiquement la largeur des colonnes pour une meilleure visibilité
    resultWs.Columns("A:G").AutoFit
    MsgBox "Le profilage des données est terminé ! Les résultats sont dans la feuille 'Résultats Profilage'."
End Sub

Explication du Code :

  • Définir ws et resultWs : Ces variables représentent la feuille contenant les données d’origine et une nouvelle feuille où les résultats du profilage seront stockés.
  • lastRow et lastCol : Ces variables déterminent la taille des données (nombre de lignes et de colonnes) à traiter.
  • Parcourir chaque colonne : Le code parcourt chaque colonne pour calculer des statistiques comme les valeurs manquantes, le minimum, le maximum, la moyenne et l’écart-type.
  • Valeurs manquantes : Le code vérifie si une cellule est vide ou contient une erreur en utilisant IsEmpty(cell.Value) ou IsError(cell.Value).
  • Analyse numérique : Pour les données numériques, le code calcule la somme, la moyenne, le minimum et le maximum. Il utilise la fonction Excel StDev pour calculer l’écart-type.
  • Sortie : Après le traitement de toutes les colonnes, les résultats sont affichés dans une nouvelle feuille. Les colonnes sont redimensionnées automatiquement pour une meilleure lisibilité.

Étape 4 : Exécuter le Code
Pour exécuter le code, suivez ces étapes :
1. Enregistrez votre classeur avec les macros activées (au format .xlsm).
2. Appuyez sur Alt + F8 pour ouvrir la boîte de dialogue des macros.
3. Sélectionnez la macro ProfilageDesDonnées et cliquez sur « Exécuter ».
Résultat :
Le résultat du code sera affiché dans une nouvelle feuille intitulée « Résultats Profilage ». Cette feuille contiendra les informations suivantes :

  • Colonne : Le nom de la colonne des données analysées.
  • Total des lignes : Le nombre de lignes de données (hors ligne d’en-têtes).
  • Valeurs manquantes : Le nombre de valeurs manquantes ou vides dans la colonne.
  • Valeur minimale : La valeur numérique la plus petite de la colonne.
  • Valeur maximale : La valeur numérique la plus grande de la colonne.
  • Moyenne : La moyenne des valeurs numériques dans la colonne.
  • Écart-type : L’écart-type des valeurs numériques dans la colonne.

Conclusion :
En suivant les étapes ci-dessus, vous pouvez facilement créer une solution personnalisée de profilage de données en utilisant VBA dans Excel. Ce processus vous permet d’analyser rapidement de grands ensembles de données et de générer des informations statistiques utiles, améliorant ainsi l’évaluation de la qualité des données et la préparation à des analyses plus approfondies.

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