Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

récupérer les doublons

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

magalie

XLDnaute Occasionnel
bonjour à toutes et à tous,
j'ai un listbox qui me récupère uniquement les doublons mais c'est sur deux plages fixes.
je souhaite récupérer les doublons dans ma listbox en selectionnant deux lignes contigues et sur 5 colonnes
la comparaison se fait sur les deux lignes pas les colonnes.
en vous remerciant tous
bonne glisse mais attention à la chute
 

Pièces jointes

Re : récupérer les doublons

Bonjour magalie,

2 objets Dictionary pour trouver les doublons de 2 malheureuses lignes c'est le marteau pilon...

Dans le code de Feuil1 (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zone As Range, plage As Range, cel As Range
Set zone = [B:F] 'à adapter éventuellement
Set plage = Intersect(Target, zone)
If Not plage Is Nothing Then
  If plage.Rows.Count = 2 And plage.Columns.Count = zone.Columns.Count Then
    For Each cel In plage.Rows(2).Cells
      If Application.CountIf(plage.Rows(1), cel) Then UserForm1.ListBox1.AddItem cel
    Next
    UserForm1.Show
  End If
End If
End Sub
Application.CountIf (NB.SI) fait très bien l'affaire.

Fichier joint.

A+
 

Pièces jointes

Re : récupérer les doublons

Re, salut Bruno,

je reviens sur ma solution.

Si sur une même ligne il y a des doublons, on peut les retrouver dans la ListBox.

Pour les éliminer il faut utiliser un objet Dictionary :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zone As Range, plage As Range, d As Object, c As Range
Set zone = [B:F] 'à adapter éventuellement
Set plage = Intersect(Target, zone)
If Not plage Is Nothing Then
  If plage.Rows.Count = 2 And plage.Columns.Count = zone.Columns.Count Then
    Set d = CreateObject("Scripting.Dictionary")
    For Each c In plage.Rows(2).Cells
      If Application.CountIf(plage.Rows(1), c) Then d(c.Value) = c.Value
    Next
    UserForm1.ListBox1.List = d.keys
    UserForm1.Show
  End If
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
553
Réponses
17
Affichages
784
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…