Implémente des techniques avancées de manipulation des données, Excel VBA

Implémente des techniques avancées de manipulation des données, Excel VBA

Voici une version détaillée du code VBA pour Excel, qui implémente des techniques avancées de manipulation des données. Ces techniques incluent des tâches telles que le tri, le filtrage, la transformation des données, l’agrégation et la suppression des doublons. Le code est commenté pour expliquer chaque étape de manière détaillée.
Objectif :
Ce code va effectuer des manipulations avancées des données sur un ensemble de données exemple, telles que :
1. Tri des données selon certaines colonnes.
2. Filtrage des données selon des critères spécifiques.
3. Transformation des données (par exemple, mise en forme, ajout de champs calculés).
4. Agrégation des données avec des fonctions telles que SOMME ou MOYENNE.
5. Suppression des doublons pour nettoyer les données.
Hypothèses :

  • Les données sont situées sur une feuille de calcul nommée Data.
  • Les données commencent à partir de la première ligne (ligne d’en-tête).
  • Les colonnes sont : ID, Nom, Ventes, Date, et Catégorie.

Code VBA pour Excel :

Sub ManipulationAvanceeDesDonnees()
    ' Étape 1 : Déclaration des variables
    Dim ws As Worksheet
    Dim derniereLigne As Long
    Dim plage As Range
    Dim sommeVentes As Double
    Dim dateDebut As Date
    Dim dateFin As Date
    ' Définir l'objet feuille de calcul
    Set ws = ThisWorkbook.Sheets("Data")
    ' Étape 2 : Déterminer la dernière ligne de données
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Supposer que les données sont dans la colonne A
    ' Étape 3 : Trier les données par Ventes en ordre décroissant et par Date en ordre croissant
    Set plage = ws.Range("A1:E" & derniereLigne) ' Définir la plage de données, y compris les en-têtes
    plage.Sort Key1:=ws.Range("C2"), Order1:=xlDescending, Key2:=ws.Range("D2"), Order2:=xlAscending, Header:=xlYes
    ' Étape 4 : Filtrer les données pour "Catégorie" = "Électronique" et Ventes > 1000
    ws.Rows(1).AutoFilter Field:=5, Criteria1:="Électronique" ' Filtrer la colonne Catégorie (5)
    ws.Rows(1).AutoFilter Field:=3, Criteria1:=">1000" ' Filtrer la colonne Ventes (3)
    ' Étape 5 : Ajouter un champ calculé "TaxeVente" dans la colonne F
    ' Supposer que le taux de taxe est de 10%
    ws.Cells(1, 6).Value = "TaxeVente" ' Ajouter l'en-tête
    ws.Range("F2:F" & derniereLigne).Formula = "=C2*0.1" ' Calculer la taxe pour chaque entrée de vente (taux de 10%)
    ' Étape 6 : Supprimer les doublons basés sur la colonne "ID"
    ws.Range("A1:E" & derniereLigne).RemoveDuplicates Columns:=1, Header:=xlYes
    ' Étape 7 : Résumer les données - Calculer les ventes totales pour la catégorie "Électronique"
    dateDebut = DateValue("01/01/2024")
    dateFin = DateValue("31/12/2024")
    sommeVentes = Application.WorksheetFunction.SumIfs(ws.Range("C2:C" & derniereLigne), _
        ws.Range("E2:E" & derniereLigne), "Électronique", _
        ws.Range("D2:D" & derniereLigne), ">=" & dateDebut, _
        ws.Range("D2:D" & derniereLigne), "<=" & dateFin)
    ' Afficher le résultat dans une boîte de message
    MsgBox "Ventes totales pour la catégorie Électronique du 1er janvier 2024 au 31 décembre 2024 : " & sommeVentes
    ' Étape 8 : Transformer les données - Modifier le format de la colonne 'Date' en mm/jj/aaaa
    ws.Columns("D:D").NumberFormat = "mm/dd/yyyy"
    ' Étape 9 : Créer un tableau croisé dynamique pour une analyse plus poussée (facultatif)
    ' Vous pouvez automatiser la création d'un tableau croisé dynamique si nécessaire, en fonction de votre cas d'utilisation
    Dim pt As PivotTable
    Dim plagePT As Range
    Set plagePT = ws.Range("A1:F" & derniereLigne) ' Plage incluant le nouveau champ calculé "TaxeVente"
    ' Créer un tableau croisé dynamique dans une nouvelle feuille
    Set pt = ThisWorkbook.PivotTableWizard(SourceType:=xlDatabase, SourceData:=plagePT, TableDestination:="PivotSheet!A1")
    pt.AddDataField pt.PivotFields("Ventes"), "Ventes Totales", xlSum
    pt.AddRowField pt.PivotFields("Catégorie")
    pt.AddColumnField pt.PivotFields("Date")
    ' Étape 10 : Nettoyer en supprimant les filtres
    ws.AutoFilterMode = False
    ' Message final
    MsgBox "Manipulation des données terminée. Les ventes totales pour la catégorie Électronique ont été calculées et un tableau croisé dynamique a été créé."
End Sub

Explication détaillée :
Étape 1 : Déclaration des variables

  • Nous déclarons des variables pour stocker la feuille de calcul (ws), la dernière ligne des données (derniereLigne), la plage de données (plage), la somme des ventes (sommeVentes), ainsi que les dates de début et de fin pour le filtrage des données (dateDebut et dateFin).

Étape 2 : Déterminer la dernière ligne

  • Cette étape permet de trouver la dernière ligne de données dans la feuille en fonction de la colonne A. La méthode .End(xlUp) est utilisée pour identifier la dernière ligne non vide.

Étape 3 : Trier les données

  • La méthode Sort est utilisée pour trier les données d’abord par la colonne Ventes en ordre décroissant, puis par la colonne Date en ordre croissant. Les arguments Key1 et Key2 spécifient les colonnes par lesquelles trier les données.

Étape 4 : Filtrer les données

  • Nous appliquons la méthode AutoFilter pour filtrer les données. Nous filtrons la colonne Catégorie pour obtenir uniquement les lignes où la catégorie est « Électronique » et la colonne Ventes pour obtenir uniquement les valeurs supérieures à 1000.

Étape 5 : Ajouter un champ calculé (TaxeVente)

  • Une nouvelle colonne TaxeVente est ajoutée à la feuille de calcul. Une formule est appliquée pour calculer 10 % de chaque valeur dans la colonne Ventes (représentant une taxe de vente de 10%).

Étape 6 : Supprimer les doublons

  • La méthode RemoveDuplicates est utilisée pour supprimer les doublons en se basant sur la colonne ID, assurant ainsi que chaque entrée est unique.

Étape 7 : Résumer les données

  • Nous utilisons la fonction SumIfs pour calculer les ventes totales de la catégorie « Électronique », en tenant compte des dates spécifiées. Cette étape permet d’agréger les données en fonction de plusieurs critères.

Étape 8 : Transformer le format des données

  • La propriété NumberFormat est appliquée à la colonne Date pour garantir que les dates sont affichées au format « mm/jj/aaaa« .

Étape 9 : Création d’un tableau croisé dynamique (facultatif)

  • Si nécessaire, un tableau croisé dynamique peut être créé automatiquement. Dans cet exemple, nous générons un tableau croisé dynamique qui résume les ventes totales par Catégorie et Date.

Étape 10 : Nettoyage des filtres

  • Enfin, nous supprimons les filtres appliqués à la feuille à l’aide de AutoFilterMode = False, ce qui permet de revenir à un état de feuille normal.

Conclusion :
Ce code VBA pour Excel démontre plusieurs techniques avancées de manipulation des données, telles que le tri, le filtrage, l’ajout de champs calculés, la suppression des doublons, l’agrégation des données, la transformation du format des données, et la création de tableaux croisés dynamiques pour l’analyse. Chaque étape est expliquée avec des commentaires détaillés, ce qui rend le code facile à comprendre et à adapter à différents scénarios.

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