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 !