Supprimer les doublons dans un jeu de données, Excel VBA
Voici une explication détaillée ainsi qu’un code VBA pour supprimer les doublons dans un jeu de données sous Excel.
Objectif :
L’objectif est d’écrire un code VBA qui supprimera les doublons d’une plage de données sélectionnée dans une feuille Excel. Cela peut être utile lorsque vous avez des données dans une liste et que vous souhaitez les nettoyer en supprimant les entrées répétées.
Ce que fait le code VBA :
1. Identifie la plage contenant les données (soit la plage sélectionnée, soit une colonne entière).
2. Supprime les doublons en fonction d’une ou plusieurs colonnes.
3. Conserve la première occurrence et supprime les doublons dans la plage spécifiée.
4. Fournit un retour d’information à l’utilisateur sur le nombre de doublons supprimés.
Explication détaillée du code :
1. Définir la plage :
- Le code commence par identifier la plage de cellules où les doublons doivent être supprimés. Vous pouvez spécifier cette plage manuellement ou choisir la colonne entière ou une plage particulière.
2. Utilisation de RemoveDuplicates :
- La méthode RemoveDuplicates est utilisée en VBA pour supprimer les doublons dans la plage. Cette méthode permet de spécifier les colonnes sur lesquelles vérifier les doublons.
3. Retour à l’utilisateur :
- Après la suppression des doublons, une boîte de message notifiera l’utilisateur du nombre de doublons supprimés afin qu’il puisse voir le résultat de l’opération.
Code Exemple :
Sub SupprimerDoublons() ' Déclaration des variables Dim ws As Worksheet Dim plageDonnees As Range Dim resultat As Range Dim nbDoublonsSupprimes As Integer ' Définir la feuille de travail et la plage de données où vous souhaitez supprimer les doublons ' Par exemple, on utilise la feuille active et la plage de A1 jusqu'à la dernière ligne utilisée dans la colonne A Set ws = ThisWorkbook.ActiveSheet Set plageDonnees = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Confirmation de la plage utilisée MsgBox "Suppression des doublons dans : " & plageDonnees.Address ' Suppression des doublons dans la colonne 1 (vous pouvez modifier les références de colonnes ici si nécessaire) ' La méthode RemoveDuplicates nécessite un tableau d'index de colonnes à vérifier pour les doublons. ' Dans ce cas, nous vérifions les doublons dans la colonne 1 (colonne A). ' Suppression des doublons dans la plage nbDoublonsSupprimes = plageDonnees.RemoveDuplicates(Columns:=1, Header:=xlNo) ' xlNo indique qu'il n'y a pas d'en-tête dans la plage ' Retour à l'utilisateur sur le nombre de doublons supprimés MsgBox nbDoublonsSupprimes & " doublons ont été supprimés de la plage " & plageDonnees.Address, vbInformation, "Doublons supprimés" End Sub
Explication détaillée du code :
1. Déclaration des Variables :
ws
: Une variable qui représente la feuille de travail sur laquelle l’opération sera effectuée.plageDonnees
: Une variable qui contiendra la plage de données dont les doublons seront supprimés.resultat
: Cela pourrait être utilisé pour capturer un éventuel résultat renvoyé par la méthodeRemoveDuplicates
.nbDoublonsSupprimes
: Pour stocker le nombre de doublons supprimés, cette valeur sera renvoyée par la méthodeRemoveDuplicates
.
2. Définir la Plage :
Set ws = ThisWorkbook.ActiveSheet
: Cela définit la feuille de travail sur laquelle l’opération sera appliquée. Ici, la feuille active est sélectionnée.Set plageDonnees = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
: Cette ligne définit la plage dans laquelle les doublons seront supprimés. Elle commence à A1 et s’étend jusqu’à la dernière ligne utilisée de la colonne A. La méthode .End(xlUp) est utilisée pour trouver la dernière ligne utilisée de la colonne spécifiée.
3. Suppression des Doublons :
-
nbDoublonsSupprimes = plageDonnees.RemoveDuplicates(Columns:=1, Header:=xlNo)
: C’est là que les doublons sont effectivement supprimés. La méthode RemoveDuplicates prend deux arguments principaux :- Columns : Spécifie les colonnes à vérifier pour les doublons. Dans ce cas, c’est la colonne 1 (c’est-à-dire la colonne A).
- Header : Indique si la première ligne contient des en-têtes (xlYes) ou si la plage ne contient pas d’en-tête (xlNo). Ici, nous supposons qu’il n’y a pas d’en-tête, donc on utilise xlNo.
4. Retour d’information :
- Une fois que les doublons sont supprimés, une boîte de message apparaîtra pour indiquer combien de doublons ont été supprimés (nbDoublonsSupprimes) et la plage concernée par l’opération (plageDonnees.Address).
Modifications supplémentaires possibles :
-
- Suppression de Doublons sur Plusieurs Colonnes : Si vous souhaitez supprimer les doublons en fonction de plusieurs colonnes (par exemple, les colonnes A et B), vous pouvez modifier le paramètre Columns comme suit :
nbDoublonsSupprimes = plageDonnees.RemoveDuplicates(Columns:=Array(1, 2), Header:=xlNo)
- Gestion des En-têtes : Si vos données comportent des en-têtes dans la première ligne, vous pouvez changer Header:=xlNo en Header:=xlYes dans la méthode RemoveDuplicates pour conserver la ligne d’en-tête.
Conclusion :
Ce code VBA permet de supprimer facilement les doublons dans une plage sélectionnée dans Excel. Il est simple à personnaliser, par exemple, pour l’appliquer à une feuille spécifique ou supprimer des doublons sur plusieurs colonnes. Cette méthode est très efficace, surtout lorsqu’on travaille avec de grands ensembles de données.