tri de données...

pnlop

XLDnaute Occasionnel
Bonjour le forum,
Quelqu'un pourrait-il me trouver une solution à ceci:

J'ai 2 colonnes: A et B.

Dans A, il y a des numéro d'articles. Dans B, il y a aussi des numéros d'articles, les mêmes qu'en A, mais aussi quelques uns en plus disséminés un peu partout.....

Je souhaiterai un formule magique qui efface en A et B toutes les données à doubles et qui laisse en B juste ceux qui n'étaient pas en A...
J'ai essayer le " supprimer les doublons", mais ça ne fonctionne pas comme je veux...

Je joins un classeur avec des données pour illustrer le message...

Merci pour votre aide!
 

Fichiers joints

Iznogood1

XLDnaute Impliqué
Re : tri de données...

En C3 :
=SI(ESTNA(RECHERCHEV(B3;A:A;1;FAUX));"Valeur unique";"")

Puis copie la formule jusqu'en C1246.
Tu peux alors utiliser un filtre sur la colonne C
 

Paf

XLDnaute Barbatruc
Re : tri de données...

Bonjour à tous

une macro qui laisse en colonne A les données non connues en colonne B et inversement. A tester

Code:
Sub pnlop()
 Dim DerA As Long, DerB As Long, TablA, TablB, DicoA, DicoB, i As Long, Prod
 Set DicoA = CreateObject("Scripting.Dictionary")
 Set DicoB = CreateObject("Scripting.Dictionary")

    DerA = Range("A" & Rows.Count).End(xlUp).Row
    DerB = Range("B" & Rows.Count).End(xlUp).Row
    TablA = Range("A4:A" & DerA)
    TablB = Range("B4:B" & DerB)
    
    For i = LBound(TablB) To UBound(TablB)
        DicoB(TablB(i, 1)) = ""
    Next
    For i = LBound(TablA) To UBound(TablA)
        If DicoB.exists(TablA(i, 1)) Then
            DicoB.Remove (TablA(i, 1))
        Else
            DicoA(TablA(i, 1)) = ""
        End If
    Next
    Range("A4:A" & DerA).ClearContents
    Range("B4:B" & DerB).ClearContents
    Range("A4").Resize(DicoA.Count) = Application.Transpose(DicoA.keys)
    Range("B4").Resize(DicoB.Count) = Application.Transpose(DicoB.keys)
End Sub
A+
 

chris

XLDnaute Barbatruc
Re : tri de données...

Bonjour

Avec un filtre avancé : extraction puis suppression des anciennes colonnes.
 

Fichiers joints

gosselien

XLDnaute Barbatruc
Re : tri de données...

Bonjour,

j'aurais plutot indique FILTRE et pas tri :)

une autre solution
Colonne A et B pour la recherche et colonne E doit être libre

Sub Uniq()
Dim R As Range, Dico As Object, x, a, b, i&, s ' déclaration des variables OK
Set Dico = CreateObject("Scripting.Dictionary")
Set ws1 = Sheets("794300")
lastrowa = Range("A65000").End(xlUp).Row
lastrowb = Range("B65000").End(xlUp).Row
plus = IIf(lastrowa < lastrowb, lastrowb, lastrowa)
Set R = Range("A1:B" & plus) ' ws1.[A65000].End(xlUp).Row)
For Each R In R ' pour chaque cellule dans le range "r"
If R <> "" Then
x = R ' ? scalaire plus rapide, évite de répéter r.Value
If Not Dico.Exists(x) Then '
Dico(x) = Dico(x) '
End If
End If
Next
'---restitution en colonne E---
Application.ScreenUpdating = False ' OK
Range("E2:E" & Rows.Count).Clear ' OK
If Dico.Count = 0 Then Exit Sub ' si vide on sort OK
a = Dico.Keys
b = Dico.Items
For i = 0 To UBound(a) ' boucle de 0 à nombre d'occurences les "array" commencent toujours à 0
Cells(i + 1, 5) = a(i)
Next
Columns(5).AutoFit
End Sub
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas