Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparaison avec supression

1 réponse
Avatar
ju89100
Bonjour,

j'ai trouvé, pour les besoin d'un tableau excel, un bout de code que j'ai réussi à adapté à mon cas.

il s'agit de comparer 2 listes et de renvoyé les noms communs aux deux listes.
La dessus pas de soucis ça fonctionne bien.
Le soucis que j'ai est que si je retire des noms de la liste 2, ils restent tout de même affiché dans les nom commun alors qu'il ne sont plus commun aux 2 liste.

A noté que je n'y connais rien au VBA, j'ai fais de la bidouille a partir de code déjà existant.

voici mon code (trouvé ici: http://boisgontierjacques.free.fr/ ):

Sub Communs()
Set f1 = Sheets("code")
Set f2 = Sheets("mars 2015")
Set mondico1 = CreateObject("Scripting.Dictionary")
For Each c In f1.Range("m5:m15" & f1.[m65000].End(xlUp).Row)
mondico1.Item(c.Value) = c.Value
Next c
Set mondico2 = CreateObject("Scripting.Dictionary")
For Each c In f2.Range("v3:V100" & f2.[d65000].End(xlUp).Row)
If mondico1.Exists(c.Value) Then If Not mondico2.Exists(c.Value) Then mondico2.Add c.Value, c.Value
Next c
Sheets("Mars 2015").[AB5].Resize(mondico2.Count, 1) = Application.Transpose(mondico2.items)
End Sub

1 réponse

Avatar
pikaboy
Le mercredi 11 Mars 2015 à 18:45 par ju89100 :
Bonjour,

j'ai trouvé, pour les besoin d'un tableau excel, un bout de code que
j'ai réussi à adapté à mon cas.

il s'agit de comparer 2 listes et de renvoyé les noms communs aux deux
listes.
La dessus pas de soucis ça fonctionne bien.
Le soucis que j'ai est que si je retire des noms de la liste 2, ils restent
tout de même affiché dans les nom commun alors qu'il ne sont plus
commun aux 2 liste.

A noté que je n'y connais rien au VBA, j'ai fais de la bidouille a
partir de code déjà existant.

voici mon code (trouvé ici: http://boisgontierjacques.free.fr/ ):

Sub Communs()
Set f1 = Sheets("code")
Set f2 = Sheets("mars 2015")
Set mondico1 = CreateObject("Scripting.Dictionary")
For Each c In f1.Range("m5:m15" & f1.[m65000].End(xlUp).Row)
mondico1.Item(c.Value) = c.Value
Next c
Set mondico2 = CreateObject("Scripting.Dictionary")
For Each c In f2.Range("v3:V100" & f2.[d65000].End(xlUp).Row)
If mondico1.Exists(c.Value) Then If Not mondico2.Exists(c.Value) Then
mondico2.Add c.Value, c.Value
Next c
Sheets("Mars 2015").[AB5].Resize(mondico2.Count, 1) =
Application.Transpose(mondico2.items)
End Sub


Bonjour, ton code vire dans le compliqué des le debut meme si J.B fait du tres bon travail.
Si j'ai bien compris tu cherches juste des doublons de texte !?

Alors pourquoi ne passerais tu pas par une MFC pour te simplifier la vie ?
Si non, par la formule uniquement.

celle qui peut t'apporter satisfaction sera sans nul doute la fonction "nb.si".
Elle s'utilise ainsi : NB.SI(GC2:GC56;I40)

Il te faudra juste la repeter sur chaque cellule de destination, apres avoir choisit ta plage de comparaison.