Supprimer les doublons d'un combobox

Contenu du snippet

' a mettre dans un module
Sub ListeSansDoublon(ByRef MaPlage As Range, ByRef MaCombobox As ComboBox)
    ' on commence par verifier ce qui a été passé en parametre
    If Not MaCombobox Is Nothing And Not MaPlage Is Nothing Then
        If TypeOf MaCombobox Is ComboBox Then
            Application.ScreenUpdating = False
            ' utilisation du filre de donnée élaboré
            MaPlage.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
            ' le filtre élaboré a besoin d'un colonne de donnée avec etiquette
            ' donc pour ne pas mettre cette etiquette dans la liste on se decale d'une ligne vers le bas
            Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1, 1)
            ' les données en doubles on été cachées par le filtre
            ' il suffit donc de ne recupérer que ce qui est visible
            Set MaPlage = MaPlage.SpecialCells(xlCellTypeVisible)
            ' comme on ne peut pas attribuer les valeurs d'une plage composée de plusieurs area a une combobox
            ' on vas contourner le probleme par un copy paste des valeurs sur une plage temporaire
            MaPlage.Copy
            Range("Z1").PasteSpecial Paste:=xlPasteValues ' ici la plage temporaire est la colonne Z
            MaCombobox.List() = Selection.Value
            ' on desactive le filtre
            ActiveSheet.ShowAllData
            ' on efface la zone temporaire
            Selection.ClearContents
            ' on centre l'affichage sur la plage d'origine
            MaPlage.Cells(1, 1).Activate
            Application.ScreenUpdating = True
        End If
    End If
End Sub

Compatibilité : VBA

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.