' 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
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.