Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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...
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
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
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
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
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
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