Implémenter des fonctions avancées de transformation de données, Excel VBA

Implémenter des fonctions avancées de transformation de données, Excel VBA

Voici un code VBA détaillé pour implémenter des fonctions avancées de transformation de données dans Excel. Je vais vous expliquer en profondeur chaque technique pour que vous puissiez comprendre comment automatiser les transformations courantes et complexes dans vos jeux de données.
1. Contexte
Dans Excel, nous devons souvent travailler avec de grands ensembles de données et effectuer diverses transformations (comme la conversion, le nettoyage ou le filtrage des données) pour générer des rapports dynamiques. VBA (Visual Basic for Applications) est un outil puissant pour automatiser ces tâches. Parmi les transformations avancées, on retrouve des opérations comme :

  • La suppression des doublons selon certaines conditions.
  • La réorganisation des données sous différents formats (pivot, dé-pivot).
  • Le regroupement et l’agrégation des données.
  • Le traitement des valeurs manquantes (par exemple, remplir les cellules vides).
  • La fusion de plusieurs ensembles de données en fonction de clés communes.

Dans ce code, je vais vous montrer quelques-unes de ces transformations. Je vais également ajouter des commentaires détaillés pour expliquer chaque étape.
1. Suppression des Doublons avec des Conditions Spécifiques
Commençons par une transformation courante : la suppression des doublons en fonction de critères spécifiques.

Sub SupprimerDoublonsAvances()
    ' Définir les variables
    Dim ws As Worksheet
    Dim plageDonnees As Range
    Dim colonnesUniques As Variant
    ' Définir la feuille de travail active
    Set ws = ThisWorkbook.Sheets("Feuille1")
    ' Définir la plage de données (en supposant que les données commencent en A1 et se terminent à la dernière ligne de la colonne A)
    Set plageDonnees = ws.Range("A1").CurrentRegion
    ' Définir les colonnes à considérer pour trouver les doublons (par exemple, colonnes 1 et 2)
    colonnesUniques = Array(1, 2) ' Vérifier les doublons selon les colonnes A et B
    ' Supprimer les doublons
    plageDonnees.RemoveDuplicates Columns:=colonnesUniques, Header:=xlYes
    MsgBox "Les doublons ont été supprimés avec succès !"
End Sub

Explication :

  • Définition des Variables :
  • ws : Référence à la feuille de travail où se trouvent les données.
  • plageDonnees : Plage de données où l’on souhaite effectuer l’opération.
  • colonnesUniques : Spécifie les colonnes utilisées pour détecter les doublons (ici, les colonnes A et B).
  • Définir la Plage : La propriété CurrentRegion permet de détecter automatiquement la plage de données, en s’étendant pour inclure toutes les cellules non vides adjacentes.
  • Supprimer les Doublons : La méthode RemoveDuplicates supprime les lignes où les valeurs des colonnes spécifiées sont identiques.

2. Regroupement et Agrégation des Données (Somme des Valeurs par Groupe)
Parfois, vous devez regrouper les données par une colonne spécifique et effectuer une agrégation comme la somme des valeurs d’une autre colonne.

Sub RegrouperEtAgrégerDonnees()
    ' Définir les variables
    Dim ws As Worksheet
    Dim dernièreLigne As Long
    Dim plageDonnees As Range
    Dim plageResultat As Range
    Dim dict As Object
    Dim i As Long
    ' Définir la feuille de travail et obtenir la dernière ligne
    Set ws = ThisWorkbook.Sheets("Feuille1")
    dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Définir la plage de données (en supposant que les données sont dans les colonnes A et B)
    Set plageDonnees = ws.Range("A2:B" & dernièreLigne)
    ' Créer un dictionnaire pour stocker les résultats agrégés
    Set dict = CreateObject("Scripting.Dictionary")
    ' Boucle à travers les données et sommer les valeurs par groupe (dans la colonne A)
    For i = 2 To dernièreLigne
        Dim cléGroupe As String
        Dim valeur As Double
        cléGroupe = ws.Cells(i, 1).Value  ' Le groupe (Colonne A)
        valeur = ws.Cells(i, 2).Value  ' La valeur à sommer (Colonne B)
        If dict.Exists(cléGroupe) Then
            dict(cléGroupe) = dict(cléGroupe) + valeur
        Else
            dict.Add cléGroupe, valeur
        End If
    Next i
    ' Sortir les résultats dans une nouvelle plage (en commençant à partir de la colonne D)
    Set plageResultat = ws.Range("D2")
    plageResultat.Value = "Groupe"
    plageResultat.Offset(0, 1).Value = "Valeur Totale"
    Dim ligne As Long
    ligne = 3
    For Each clé In dict.Keys
        ws.Cells(ligne, 4).Value = clé
        ws.Cells(ligne, 5).Value = dict(clé)
        ligne = ligne + 1
    Next clé
    MsgBox "Les données ont été regroupées et agrégées avec succès !"
End Sub

Explication :

  • Définition des Variables :
  • dict : Un objet dictionnaire utilisé pour stocker la somme des valeurs par groupe (regroupement basé sur la colonne A).
  • Boucle à Travers les Données : On parcourt chaque ligne de l’ensemble de données et on vérifie si le groupe existe déjà dans le dictionnaire. Si oui, on ajoute la valeur de la colonne B à la somme existante, sinon on crée une nouvelle entrée.
  • Sortie des Résultats : Les résultats sont ensuite affichés dans les colonnes D et E, où chaque groupe unique est listé avec la somme totale des valeurs.

3. Pivotement des Données (Conversion de Lignes en Colonnes)
Le pivotement des données consiste à convertir des lignes en colonnes, ce qui est utile pour créer des résumés et des analyses croisées.

Sub PivoterDonnees()
    ' Définir les variables
    Dim ws As Worksheet
    Dim plageDonnees As Range
    Dim ptCache As PivotCache
    Dim pt As PivotTable
    ' Définir la feuille de travail active
    Set ws = ThisWorkbook.Sheets("Feuille1")
    ' Définir la plage de données (en supposant que les données commencent en A1)
    Set plageDonnees = ws.Range("A1").CurrentRegion
    ' Créer le cache de la table pivot
    Set ptCache = ThisWorkbook.PivotTableWizardSourceDataRange(plageDonnees)
    ' Créer la table pivot
    Set pt = ptCache.CreatePivotTable(ws.Range("E1"))
    ' Ajouter les champs de lignes, de colonnes et de valeurs
    With pt
        .PivotFields("Catégorie").Orientation = xlRowField
        .PivotFields("Produit").Orientation = xlColumnField
        .PivotFields("Ventes").Orientation = xlDataField
    End With
    MsgBox "Les données ont été pivotées avec succès !"
End Sub

Explication :

  • Table Pivot : Nous définissons la plage de données et créons une table pivot en utilisant cette plage. La fonction PivotTableWizardSourceDataRange sert à définir les données sources pour la table pivot.
  • Définition des Champs : Nous attribuons le champ Catégorie comme ligne, Produit comme colonne et Ventes comme valeur (la donnée à agréger). La table pivot affichera le total des ventes par produit et par catégorie.

4. Remplissage des Données Manquantes (Interpolation des Valeurs Manquantes)
Les données sont parfois incomplètes, c’est-à-dire qu’il manque des valeurs dans certaines cellules. Une technique courante consiste à remplir ces valeurs manquantes par interpolation (par exemple, en prenant la moyenne des valeurs adjacentes).

Sub RemplirDonneesManquantes()
    ' Définir les variables
    Dim ws As Worksheet
    Dim dernièreLigne As Long
    Dim i As Long
    Dim valeurCourante As Double
    Dim valeurPrécédente As Double
    ' Définir la feuille de travail
    Set ws = ThisWorkbook.Sheets("Feuille1")
    ' Obtenir la dernière ligne
    dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Remplir les valeurs manquantes par interpolation (moyenne des valeurs précédentes et suivantes)
    For i = 2 To dernièreLigne
        If IsEmpty(ws.Cells(i, 2)) Then
            ' Si la cellule est vide, la remplir avec la moyenne des valeurs précédente et suivante
            If i > 2 And i < dernièreLigne Then valeurPrécédente = ws.Cells(i - 1, 2).Value valeurCourante = ws.Cells(i + 1, 2).Value ws.Cells(i, 2).Value = (valeurPrécédente + valeurCourante) / 2 ElseIf i > 2 Then
                ' Si c'est la première ou dernière ligne, utiliser la valeur précédente
                ws.Cells(i, 2).Value = ws.Cells(i - 1, 2).Value
            End If
        End If
    Next i
    MsgBox "Les valeurs manquantes ont été remplies avec succès !"
End Sub

Explication :

  • Remplissage des Données Manquantes : Dans ce code, on vérifie chaque cellule de la colonne B. Si la cellule est vide, elle est remplie avec la moyenne des valeurs précédentes et suivantes. Cela constitue un exemple simple d’interpolation pour traiter les données manquantes.
  • Cas Particuliers : On gère les cas où les données manquantes se trouvent dans la première ou la dernière ligne en utilisant simplement la valeur précédente.

Conclusion :
Ces exemples montrent quelques techniques avancées de transformation de données dans Excel en utilisant VBA. Chaque transformation répond à un besoin spécifique lorsqu’on travaille avec de grands ensembles de données. En utilisant VBA, vous pouvez automatiser ces tâches de manière efficace, ce qui vous fera gagner du temps et améliorera votre productivité.

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