Dé doublonnage

laboriec

XLDnaute Nouveau
Bonjour à tous,

Après plusieurs minutes passées sur les différents Post... Je me résous à publier ma première question.

J’ai une liste de référence avec parfois des doublons et plusieurs quantités restantes… Je souhaiterai rapidement identifier les lignes ou j’ai les données les plus favorables.

Par exemple, ligne 12 – 13 – 14 : je souhaiterai rapidement identifier la ligne 13 et masquer les deux autres.
Même chose ligne 8 et 9 : Je ne souhaite conserver que la ligne 9.

Pouvez-vous m’aider ?

Merci d'avance
 

Pièces jointes

  • Test1.xls
    25.5 KB · Affichages: 35
  • Test1.xls
    25.5 KB · Affichages: 36

Paf

XLDnaute Barbatruc
Re : Dé doublonnage

bonjour laboriec , tototiti2008

une approche par macro, plus radical: les lignes inutiles sont supprimées:

Code:
Sub SupDoublon()
 Dim MonTab, MonDico, MaPlage As Range
 With Worksheets("Feuil1")
 Set MonDico = CreateObject("Scripting.Dictionary")
 Set MaPlage = .Range("A2:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
 MonTab = MaPlage
 For i = LBound(MonTab) To UBound(MonTab)
    If MonDico.exists(MonTab(i, 1)) Then
        If MonTab(i, 2) > MonDico(MonTab(i, 1)) Then MonDico(MonTab(i, 1)) = MonTab(i, 2)
    Else
        MonDico(MonTab(i, 1)) = MonTab(i, 2)
    End If
 Next
 MaPlage.ClearContents
 .[A2].Resize(MonDico.Count, 1) = Application.Transpose(MonDico.keys)
 .[B2].Resize(MonDico.Count, 1) = Application.Transpose(MonDico.items)
 End With
End Sub

A+
 

grisan29

XLDnaute Accro
Re : Dé doublonnage

bonjour laboriec, Paf,tototiti2008 et le forum
peut importe le nombre de lignes que tu as dans ton classeur le code devrait fonctionner car cette ligne le permet
Code:
 Set MaPlage = .Range("A2:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
car elle compte a partir du bas

Pascal
 

klin89

XLDnaute Accro
Re : Dé doublonnage

Bonsoir à tous, :)

Similaire à Paf :
VB:
Option Explicit
Sub test()
Dim a, i As Long, j As Long, n As Long
    Application.ScreenUpdating = False
    With Sheets("Feuil1").Range("a1").CurrentRegion.Columns("a:b")
        a = .Value: n = 1
        With CreateObject("Scripting.Dictionary")
            .CompareMode = 1
            For i = 2 To UBound(a, 1)
                If Not .exists(a(i, 1)) Then
                    n = n + 1
                    .Item(a(i, 1)) = n
                    For j = 1 To UBound(a, 2)
                        a(n, j) = a(i, j)
                    Next
                Else
                    'a(.Item(a(i, 1)), 2) = Application.Max(a(.Item(a(i, 1)), 2), a(i, 2))
                    If a(.Item(a(i, 1)), 2) < a(i, 2) Then
                        a(.Item(a(i, 1)), 2) = a(i, 2)
                    End If
                End If
            Next
        End With
        With .Offset(, .Columns.Count + 2)
            .CurrentRegion.Clear
            .Cells(1).Resize(n, UBound(a, 2)).Value = a
            With .CurrentRegion
                .Font.Name = "calibri"
                .Font.Size = 10
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Borders(xlInsideVertical).Weight = xlThin
                .BorderAround Weight:=xlThin
                With .Rows(1)
                    .Font.Size = 11
                    .Interior.ColorIndex = 38
                    .BorderAround Weight:=xlThin
                End With
                .Columns.AutoFit
            End With
        End With
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
392

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 835
dernier inscrit
Alexandrax971