Implémenter un pipeline de transformation de données avancé, Excel VBA
Voici un code VBA détaillé pour implémenter un pipeline de transformation de données avancé dans Excel, avec des explications longues et détaillées.
Scénario
Nous allons créer un pipeline qui effectue les opérations suivantes sur les données :
1. Chargement des données : Importer les données brutes à partir d’une feuille de calcul.
2. Nettoyage des données : Supprimer les lignes vides, gérer les valeurs manquantes et standardiser le texte.
3. Transformation des données : Effectuer des calculs ou des agrégations.
4. Sortie des données : Exporter les données transformées vers une nouvelle feuille de calcul.
Structure du code VBA
Sub PipelineTransformationAvancee() ' Déclarer les variables Dim wsSource As Worksheet Dim wsSortie As Worksheet Dim derniereLigne As Long Dim i As Long Dim valeur As Double Dim donneesNettoyees As Collection Dim ligneNettoyee As Variant Dim compteurLignes As Long ' Définir les feuilles de calcul Set wsSource = ThisWorkbook.Sheets("DonnéesBrutes") ' Feuille de données brutes Set wsSortie = ThisWorkbook.Sheets("DonnéesNettoyées") ' Feuille de sortie des données transformées ' Trouver la dernière ligne de données dans la feuille source derniereLigne = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' Effacer les données existantes dans la feuille de sortie wsSortie.Cells.Clear ' Étape 1 : Nettoyage des données Set donneesNettoyees = New Collection For i = 2 To derniereLigne ' Supposons que la première ligne est celle des en-têtes ' Lire les données ligne par ligne ligneNettoyee = Application.Transpose(wsSource.Range("A" & i & ":D" & i).Value) ' Étape 1.1 : Supprimer les lignes avec des valeurs vides If Not IsEmpty(ligneNettoyee(1)) And Not IsEmpty(ligneNettoyee(2)) Then ' Étape 1.2 : Gérer les valeurs manquantes (remplacer les cellules vides par la valeur 0) For j = 1 To UBound(ligneNettoyee) If IsEmpty(ligneNettoyee(j)) Then ligneNettoyee(j) = 0 ' Valeur par défaut pour les données manquantes End If Next j ' Étape 1.3 : Standardiser le texte (supprimer les espaces, mettre en majuscules) ligneNettoyee(3) = Trim(UCase(ligneNettoyee(3))) ' Supposons que la colonne C contient le texte à standardiser ' Ajouter la ligne nettoyée à la collection donneesNettoyees.Add ligneNettoyee End If Next i ' Étape 2 : Transformation des données compteurLignes = 1 ' Ligne de départ pour l'affichage des résultats For Each ligneNettoyee In donneesNettoyees ' Écrire les données nettoyées dans la feuille de sortie wsSortie.Cells(compteurLignes, 1).Value = ligneNettoyee(1) wsSortie.Cells(compteurLignes, 2).Value = ligneNettoyee(2) wsSortie.Cells(compteurLignes, 3).Value = ligneNettoyee(3) ' Étape 2.1 : Appliquer une transformation (exemple : appliquer un calcul) valeur = ligneNettoyee(2) * 1.1 ' Exemple : appliquer une augmentation de 10% sur la valeur de la deuxième colonne wsSortie.Cells(compteurLignes, 4).Value = valeur compteurLignes = compteurLignes + 1 Next ligneNettoyee ' Étape 3 : Agrégation (optionnelle) ' Par exemple, additionner les valeurs transformées Dim total As Double total = 0 For i = 2 To compteurLignes - 1 total = total + wsSortie.Cells(i, 4).Value Next i ' Afficher le total dans la ligne suivante wsSortie.Cells(compteurLignes, 4).Value = "Total" wsSortie.Cells(compteurLignes, 5).Value = total MsgBox "Transformation des données terminée !" End Sub
Explication détaillée de chaque étape
1. Déclaration des variables :
- wsSource et wsSortie sont des variables qui font référence aux feuilles de calcul source (données brutes) et de sortie (données nettoyées et transformées).
- derniereLigne permet de trouver la dernière ligne de données dans la feuille source.
- compteurLignes suit l’avancement de l’écriture des données dans la feuille de sortie.
- donneesNettoyees est une collection qui contiendra les données après avoir été nettoyées.
2. Définition des feuilles de calcul :
- wsSource fait référence à la feuille contenant les données brutes (nommée « DonnéesBrutes« ).
- wsSortie fait référence à la feuille où les données transformées seront affichées (nommée « DonnéesNettoyées« ).
3. Nettoyage des données :
- On commence par parcourir chaque ligne des données de la feuille wsSource (en commençant par la ligne 2, car la ligne 1 contient des en-têtes).
- Pour chaque ligne, nous effectuons les actions suivantes :
- Supprimer les lignes vides : Si la première ou la deuxième colonne est vide, cette ligne est ignorée.
- Gestion des valeurs manquantes : Si une cellule est vide, elle est remplacée par la valeur par défaut (ici 0).
- Standardisation du texte : Si la troisième colonne contient du texte, ce texte est d’abord supprimé des espaces avant et après, puis il est mis en majuscules (ex. : « exemple » devient « EXEMPLE »).
- Les lignes nettoyées sont ensuite ajoutées à la collection donneesNettoyees.
4. Transformation des données :
- Une fois les données nettoyées, nous les parcourons et nous les écrivons dans la feuille wsSortie.
- Transformation : Dans cet exemple, nous appliquons une transformation simple où la valeur de la deuxième colonne est augmentée de 10 % et affichée dans la quatrième colonne.
- Vous pouvez remplacer cette transformation par n’importe quel autre calcul ou opération qui correspond à vos besoins.
5. Agrégation des données (optionnel) :
- Après la transformation, une agrégation est effectuée. Dans cet exemple, nous additionnons les valeurs de la quatrième colonne (les données transformées) et affichons le total à la fin de la feuille de sortie.
- Vous pouvez ajuster cette étape pour réaliser d’autres types d’agrégations, comme une moyenne, un comptage, etc.
6. Message de fin :
- Une fois toutes les étapes terminées, une boîte de message apparaît pour informer l’utilisateur que la transformation des données est terminée.
Comment l’utiliser ?
1. Préparer votre classeur : Assurez-vous que vos données brutes se trouvent dans la feuille « DonnéesBrutes« . Les colonnes doivent être conformes à la structure définie dans le code (par exemple, quatre colonnes : une avec des valeurs numériques, une avec du texte, etc.).
2. Exécuter la macro : Ouvrez l’éditeur VBA (Alt + F11), collez le code dans un nouveau module, puis exécutez-le (F5). Les données nettoyées et transformées seront affichées dans la feuille « DonnéesNettoyées« .
Personnalisation
- Structure des colonnes : Si votre structure de données est différente, vous pouvez ajuster les plages de colonnes et de lignes dans le code.
- Logique de transformation : Le code applique actuellement une augmentation de 10 % à la colonne 2. Vous pouvez remplacer cette logique par tout autre calcul ou transformation spécifique à vos besoins.
- Agrégation : Vous pouvez ajouter d’autres types d’agrégation, comme le calcul de la moyenne, le comptage de valeurs spécifiques, etc.
Ce code vous fournit une base robuste pour implémenter un pipeline de transformation de données avancé en utilisant Excel VBA.