Top 150 cellules communes entre deux plages

Bonjour,

Tout est dans le titre, ou presque.

Je cherche un moyen efficace et automatisé de créé un tableau qui reprendrait les 150 premières valeurs communes à deux plages de cellules.

Je mets en pièce jointe un fichier avec un exemple de deux listes de codes articles triés selon différents critères. Je voudrais connaître les 150 1er en commun de ces deux listes (disons sur base de la liste 1, puisque j'ai conscience que les 150 1er ne seront pas nécessairement les mêmes d'une liste à l'autre).

Je n'ai pas trouvé d'autre méthode actuellement que mettre une mise en forme conditionnelle sur les valeurs en double, trier ensuite par couleur de cellule l'une des deux plage et copier coller les 150 1ers. Mais j'ai l'impression de faire du bricolage et je suis persuadé qu'on peut mieux faire.

Merci de votre aide,

Bien à vous,

Catab

13exemple.xlsx (19.01 Ko)

Une façon (un peu bestiale) de résoudre ...

10exemple.xlsx (29.23 Ko)

bonjour,

Une solution macro :

[code]Sub galopin()
Set D = CreateObject("Scripting.Dictionary")
Set D2 = CreateObject("Scripting.Dictionary")
For Each c In Range([B2], [B65000].End(xlUp))
D.Add (c.Text), ""
Next
For Each c In Range([A2], [A65000].End(xlUp))
If D.exists(c.Text) Then D2.Add (c.Text), ""
If D2.Count = 150 Then Exit For
Next
[E2].Resize(D2.Count, 1) = Application.Transpose(D2.keys)
End Sub

[/code]A+

Je regarderai ta proposition dès que j'aurai un peu de temps.

Merci.

Bonjour,

avec une formule :

=SI(ET(NB.SI(B:B;A2)>0;NB.SI($C$1:C1;"top")<150);"top";"")

eric

11exemple.xlsx (26.93 Ko)

La formule marche a merveille. Merci eriiic.

Je n'avais jamais utilisé la formule NB.SI() mais je comprends son utilité maintenant.

Par contre je n'ai pas eu le courage de me plonger dans le VBA, je me contenterai de la solution d'eriiic.

Je marque le sujet comme résolu.

Encore merci à vous trois.

Un tableau ... avec NB.SI, EQUIV et INDEX

8exemple.xlsx (26.43 Ko)
Rechercher des sujets similaires à "top 150 communes entre deux plages"