Supprimer les non doublons

  • Initiateur de la discussion Initiateur de la discussion anass1958
  • Date de début Date de début

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 !

Re : Supprimer les non doublons

Bonjour,

pourrais-tu précisé ce que tu veux faire?
vérifier qu'un chiffre de la colonne A ne se trouve pas en colonne B et dans ce cas le supprimer?
Même chose de la colonne B vers colonne A?
Faire une vérification par ligne? Par exemple les chiffres de la ligne 10 ne se trouvent pas ailleurs?
Plein de façon de voir des doublons...
 
Re : Supprimer les non doublons

Bonsoir,

Code:
Sub essai()
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In [a2:B1000]
    If Not MonDico.Exists(c.Value) And c.Value <> "" Then MonDico.Add c.Value, c.Value
  Next c
  [D2].Resize(MonDico.Count, 1) = Application.Transpose(MonDico.items)
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

Re : Supprimer les non doublons

merci pour votre aide
comme je me suis mal expliqué ; le resultat n'est pas ce que je veux.
la colonne A contient 157 chiffres et c'est celle qui m'intresse pour mes resultats .
je desire trouver dans la colonne B , les chiffres se trouvant dans A (pas tous ; car dans A se trouve des chiffres qui ne figurent pas dans B )
c a d que que B contiendera les chiffres se trouvant dans A .
B contiendera moins que 157 chiffres .
une intersection entre A et B en supprimant ce qui reste en B.
merci pour votre patience
 
Re : Supprimer les non doublons

Bonsoir,

La programmation n'est pas aussi élégante que celle de Boigontier mais j'espère qu'elle répond au cahier des charges ....


Sub essai2()

Dim ca As Range, cb As Range, PlageA As Range, PlageB As Range

Set PlageA = Range("A2:A" & Range("A65536").End(xlUp).Row)

Set PlageB = Range("B2:B" & Range("B65536").End(xlUp).Row)

For Each cb In PlageB
For Each ca In PlageA
If cb.Value = ca.Value Then GoTo suite:
Next ca
cb.Value = " "
suite:
Next cb

End Sub
 
Re : Supprimer les non doublons

Re,

bonjour Dmnq, JB,

donc tu veux supprimer les valeurs en colonne B ne se trouvant pas en colonne A.
C'est comme ça que je l'ai compris:

Code:
Sub test()
Dim Lig As Long, Trouve As Range
Application.ScreenUpdating = False
For Lig = [B65536].End(xlUp).Row To 2 Step -1
  Set Trouve = Columns("A").Find(Range("B" & Lig).Value, LookIn:=xlValues, lookat:=xlWhole)
  If Trouve Is Nothing Then Range("B" & Lig).Delete xlShiftUp
Next
End Sub
 
Re : Supprimer les non doublons

Bonjour,

Méthode rapide (0,01 sec):

Code:
Sub Communs()
  a = Range("A2:A" & [A65000].End(xlUp).Row)
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For Each c In a: MonDico1.Add c, c: Next c
  b = Range("B2:B" & [B65000].End(xlUp).Row)
  Set MonDico2 = CreateObject("Scripting.Dictionary")
  For Each c In b
    If MonDico1.Exists(c) Then If Not MonDico2.Exists(c) Then MonDico2.Add c, c
  Next c
  [B2:B1000].ClearContents
  [B2].Resize(MonDico2.Count, 1) = Application.Transpose(MonDico2.items)
End Sub

JB
 

Pièces jointes

Dernière édition:
Re : Supprimer les non doublons

Re,

par curiosité, j'ai "affiné" mon code en supprimant les cellules "d'un seul cout" en créant la variable Plage: 0,04s 😉.
Donc presque aussi bien que Dictionnary qui (je le savais) est très rapide.
Une bonne alternative pour ceux qui ne connaissent pas bien Dictionnary.

Code:
Sub test()
Dim Lig As Long, Trouve As Range, Plage As Range
Application.ScreenUpdating = False
For Lig = [B65536].End(xlUp).Row To 2 Step -1
  Set Trouve = Columns("A").Find(Range("B" & Lig).Value, LookIn:=xlValues, lookat:=xlWhole)
  If Trouve Is Nothing Then
    If Plage Is Nothing Then
      Set Plage = Range("B" & Lig)
    Else: Set Plage = Union(Plage, Range("B" & Lig))
    End If
  End If
Next
Plage.Delete xlShiftUp
End Sub
 
Re : Supprimer les non doublons

bjr à vous tous,
je me permets de reprendre le fil de cette discussion car c'est presque ce que je cherche (et c'est pas évident de trouver...)
dans l'exemple cité plus haut par Skoobi, j'ai juste besoin que le résultat (c'est à dire les doublons trouvés) soit copié en colonne C et non pas écrase les données de la colonne B
Merci de votre attention, Cordialement
Gérard
 
- 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
5
Affichages
217
Réponses
17
Affichages
805
Réponses
16
Affichages
559
  • Question Question
XL 2021 Doublons
Réponses
7
Affichages
276
Réponses
9
Affichages
569
Réponses
40
Affichages
2 K
Réponses
7
Affichages
313
Réponses
2
Affichages
532
Retour