Cet article/tuto portera sur les doublons avec Microsoft Excel !
Nous allons voir dans cet article différentes manières de gérer les doublons dans des tables ou bien dans des procédures en Visual Basic.
Supprimer les doublons
La manière la plus simple pour supprimer des doublons est d’utiliser la commande « Supprimer les doublons » dans l’onglet « Données » du ruban
Savez-vous qu’il est également possible de supprimer les doublons selon plusieurs critères ?
Attention, car cette procédure supprime les valeurs.
Extraction de données
Il existe un moyen d’extraire une liste de valeurs uniques d’une table grâce au filtre avancé (commande « Avancé » dans le groupe « Trier et filtrer » de l’onglet « Données » dans le ruban) :
Cela vous génère une liste unique sans toucher aux données sources :
Tableau croisé dynamique
Une autre alternative au filtre avancé est d’utiliser un tableau croisé dynamique :
Formule matricielle
Si vous cherchez le moyen d’extraire des données uniques grâce à une formule, c’est également possible :
Voici LA formule :
=INDEX(Tb[Responsable];PETITE.VALEUR(
SI(FREQUENCE(SI(Tb[Responsable]<> » »;EQUIV(Tb[Responsable];Tb[Responsable];0));
LIGNE(Tb[Responsable])-LIGNE($B$2)+1);LIGNE(Tb[Responsable])-LIGNE($B$2)+1);LIGNES(F$2:F2)))
Et comme pour toutes les formules matricielles, n’oubliez pas de valider grâce à la combinaison « Ctrl » + « Maj » + « Entrée »
Macro
Il est également possible de créer une fonction en Visual Basic qui créée une liste de valeurs uniques à partir d’une plage de données.
Deux méthodes sont envisageables :
- L’utilisation des collections
- L’utilisation du dictionnaire
Function ListeValUniqueColl(LstCel As Range) As Variant
Dim Lst As Collection
Dim Rng As Range
Dim i As Long
Dim Tb()
Set Lst = New Collection
On Error Resume Next
For Each Rng In LstCel.Cells
Lst.Add Rng.Value, CStr(Rng.Value)
Next Rng
On Error GoTo 0
ReDim Tb(1 To Lst.Count)
For i = 1 To Lst.Count
Tb(i).Value = Lst.Item(i)
Next i
ListeValUniqueColl = Tb
End Function
Function ListeValUniqueDico(LstCel As Range) As Variant
Dim Rng As Range
Dim Dico As Object
Set Dico = CreateObject(« Scripting.Dictionary »)
For Each Rng In LstCel.Cells
Dico.Item(Rng.Value) = Dico.Item(Rng.Value) + 1
Next Rng
ListeValUniqueDico = Dico.Keys
End Function
Dans les deux cas, les procédures retourne un tableau de valeurs uniques.
C’est tout pour aujourd’hui, merci d’être resté jusqu’à la fin, en espérant avoir pu vous aider ! A bientôt pour de nouveaux tutos, articles ou présentations !
Les Experts Excel vous proposent des formations, du développement, de l’expertise et de l’assistance sur Microsoft Excel. N’hésitez plus et contactez-les dès maintenant !