Développer un modèle personnalisé d’imputation de données, Excel VBA
Voici un guide détaillé pour développer un modèle personnalisé d’imputation de données en utilisant Excel VBA :
Étape 1 : Préparation de la feuille de calcul
Commencez par organiser votre feuille de calcul avec un jeu de données contenant des valeurs manquantes (cellules vides). Pour simplifier, supposons que les valeurs manquantes se trouvent dans la colonne B. Le but du modèle d’imputation sera de remplacer ces valeurs manquantes par des estimations basées sur les données voisines, la moyenne, ou une autre méthode de votre choix.
Voici un exemple de disposition de la feuille de calcul :
- Colonne A : Données (valeurs pour l’imputation)
- Colonne B : Valeurs à imputer (certaines sont manquantes)
Étape 2 : Ouvrir l’éditeur Visual Basic for Applications (VBA)
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Dans le Explorateur de projet à gauche, trouvez votre classeur. Faites un clic droit sur VBAProject (VotreNomClasseur) et sélectionnez Insérer > Module.
- Cela créera un nouveau module où vous pourrez écrire votre code VBA.
Étape 3 : Écriture du code VBA
Maintenant, écrivons le code VBA pour le modèle d’imputation des données. Nous supposerons que l’imputation sera basée sur la moyenne des valeurs voisines.
Sub ImputerDonnees() Dim derniereLigne As Long Dim i As Long Dim somme As Double Dim compte As Long Dim valeurImputee As Double Dim ws As Worksheet ' Référence à la feuille de calcul Set ws = ThisWorkbook.Sheets("Feuil1") ' Trouver la dernière ligne contenant des données dans la colonne A et B derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Boucle à travers chaque ligne de la colonne B pour vérifier les données manquantes For i = 2 To derniereLigne If IsEmpty(ws.Cells(i, 2)) Then ' Initialiser la somme et le compte des valeurs voisines somme = 0 compte = 0 ' Vérifier la valeur précédente If i > 2 And Not IsEmpty(ws.Cells(i - 1, 1)) Then somme = somme + ws.Cells(i - 1, 1).Value compte = compte + 1 End If ' Vérifier la valeur suivante If i < derniereLigne And Not IsEmpty(ws.Cells(i + 1, 1)) Then somme = somme + ws.Cells(i + 1, 1).Value compte = compte + 1 End If ' Si le compte est supérieur à 0, calculer la moyenne des valeurs voisines If compte > 0 Then valeurImputee = somme / compte ws.Cells(i, 2).Value = valeurImputee Else ' Si aucune donnée voisine valide, laisser la cellule vide ou mettre une valeur par défaut ws.Cells(i, 2).Value = "Pas de données" End If End If Next i End Sub
Étape 4 : Explication
Décomposons les parties principales du code :
- Définition des variables :
ws
: fait référence à la feuille de calcul contenant les données.derniereLigne
: permet de trouver la dernière ligne de la colonne A, garantissant que le code fonctionne pour n’importe quel nombre de lignes.somme
etcompte
: utilisées pour accumuler la somme des valeurs voisines et compter le nombre de cellules voisines valides.- Logique principale :
- La boucle
For i = 2 To derniereLigne
parcourt chaque ligne de la colonne B, à partir de la ligne 2 (supposons que la ligne 1 contient des en-têtes). - Pour chaque cellule vide dans la colonne B, le code vérifie ses cellules voisines (au-dessus et en dessous) dans la colonne A.
- La somme des valeurs voisines valides est calculée et le nombre de voisins valides est compté.
- La valeur imputée est calculée en prenant la moyenne des valeurs voisines.
- Processus d’imputation :
- S’il y a des voisins valides, leur moyenne est calculée et la valeur manquante est remplacée par cette moyenne.
- S’il n’y a pas de voisins valides (c’est-à-dire aucune donnée autour), le code marque la cellule comme « Pas de données » ou la laisse vide.
Étape 5 : Exécution du code
Pour exécuter le code VBA :
Fermez l'éditeur VBA (appuyez sur Alt + Q). Retournez dans Excel et appuyez sur Alt + F8 pour ouvrir la boîte de dialogue des macros. Sélectionnez ImputerDonnees et cliquez sur Exécuter.
Étape 6 : Résultat
Après avoir exécuté le code, les valeurs manquantes de la colonne B seront remplies en fonction de la moyenne des valeurs voisines de la colonne A. Si aucun voisin valide n’est trouvé, la valeur manquante sera marquée comme « Pas de données ».
Exemple :
Colonne A | Colonne B |
10 | 5 |
12 | |
14 | 7 |
11 | |
15 | |
18 | 10 |
Après l’exécution de l’imputation, la table pourrait ressembler à ceci :
Colonne A | Colonne B |
10 | 5 |
12 | 11 |
14 | 7 |
16 | 11 |
15 | 12,5 |
18 | 10 |
Dans ce cas, les cellules vides ont été remplies avec des valeurs imputées basées sur les valeurs voisines disponibles.
Ce modèle est personnalisable en fonction de la logique d’imputation que vous souhaitez appliquer (par exemple, en utilisant la moyenne de toutes les valeurs de la colonne, en utilisant un modèle de régression, etc.). N’hésitez pas à me faire savoir si vous souhaitez personnaliser davantage cette technique d’imputation !