Supression des doublons

Bonjour

je cherche a supprimer les lignes sur un tableau avec comme condition les valeurs en double dans la colonne C (Operation) mais sans supprimer les lignes avec la valeur #N/A

ABBAOperation
AL4844.1AL5330.1AL5330.1AL4844.114,65714299
ME2600.1ME2736.1ME2736.1ME2600.120,25000018
TO5819.1TO1530.1TO1530.1TO5819.128,89729756
EB POS01.1EBB01/EB3218.1EBB01/EB3218.1EB POS01.139,96286509
OR5307.1OR6040.1OR6040.1OR5307.148,45940256
ORT01.12OR3148.1OR3148.1ORT01.1256,11460228
BJ0678.1BJ0215.1BJ0215.1BJ0678.146,92413836
BL0923.2BL3407.1BL3407.1BL0923.2#N/A
OU3077.1OU3024.1OU3024.1OU3077.161,71428628
BM3510.1BM3572.1BM3572.1BM3510.162,89411822
ME2736.1ME2600.1ME2600.1ME2736.120,25000018
AL5330.1AL4844.1AL4844.1AL5330.114,65714299
BJ0215.1BJ0678.1BJ0678.1BJ0215.146,92413836
BM3572.1BM3510.1BM3510.1BM3572.162,89411822
OU3024.1OU3077.1OU3077.1OU3024.161,71428628
TO1530.1TO5819.1TO5819.1TO1530.128,89729756
BM3511.1BM6448.1BM6448.1BM3511.1#N/A
BM3538.1BM6414.1BM6414.1BM3538.1#N/A
SAT06.1SAT03/SA2011.2SAT03/SA2011.2SAT06.1#N/A
OR3173.1OR5349.1OR5349.1OR3173.1#N/A
EBB01/EB3218.1EB POS01.1EB POS01.1EBB01/EB3218.139,96286509
EB3239.1EB3216.2EB3216.2EB3239.1#N/A
MO2761.2MO2785.1MO2785.1MO2761.2#N/A
MO2710.1MO2743.2MO2743.2MO2710.1#N/A
OR6042.1OR5987.1OR5987.1OR6042.1#N/A
OR3148.1ORT01.12ORT01.12OR3148.156,11460228
ATT05.4OR3165.1OR3165.1ATT05.4#N/A
ATT05.4AT4664.1AT4664.1ATT05.4#N/A

merci d'avance

Bonjour GUELLILA, le forum,

Donc :

si dans la colonne C, la valeur est présente plus d'une fois mais différente de #N/A,

on supprime toute la ligne sans se soucier des colonnes A et B

A tester:

15classeur1.xlsm (55.60 Ko)

CTRL + e pour exécuter la macro.

Cordialement,

Bonsoir …

Dans l’onglet Feuil1,une plage (cellules contiguës) nommée BD, pour supprimer les doublons de sa colonne 2, tester

Sub u()
    Feuil1.[BD].Columns(2).RemoveDuplicates 1
End Sub
Remarque : 1 pour une colonne (pas son numéro)

Bonsoir xorsankukai

je viens de tester ta macro malheureusement elle supprime toutes les lignes et ne reponds pas a mes besoins

merci encore une fois

Bonjour,

Une proposition Power Query.

Cdlt.

7guellila.xlsx (20.32 Ko)

Bonjour tout le monde,

xorsankukai

je viens de tester ta macro malheureusement elle supprime toutes les lignes et ne reponds pas a mes besoins

La macro ne tient compte que des doublons en colonne C (exceptés les #N/A).

Ceci dit, lorsque je vois la solution de Jean-Eric (), je constate que je n'avais pas compris tes besoins,

Je te laisse donc avec l'expert,

@Jean-Eric : juste par curiosité, est-ce réalisable par macro ?

Bon dimanche,

Cordialement,

Bonjour

merci a vous tous pour votre aide

xorsankukai : pour répondre a ta question ci-dessous le code VBA

merci encore une fois

Option Explicit

Sub Supprimer_doublons()
Dim d As Object, a, i&, x
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
With [A1].CurrentRegion.EntireRow 'lignes entières pour conserver les hauteurs des lignes
    a = .Columns(3).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(a)
        x = a(i, 1)
        If IsError(x) Then
            a(i, 1) = 1
        Else
            If d.exists(x) Then a(i, 1) = "#N/A" Else a(i, 1) = 1: d(x) = ""
        End If
    Next
    '---restitution et filtrage---
    .Columns(3).EntireColumn.Insert 'insère une colonne auxiliaire
    .Columns(3) = a
    .Sort .Columns(3), xlAscending 'tri pour regrouper et accélérer
    On Error Resume Next 'si aucune SpecialCell
    .Columns(3).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les doublons
    .Columns(3).EntireColumn.Delete 'supprime la colonne auxiliaire
End With
End Sub

a+

Bonjour à tous,

Voici une proposition tout en mémoire :

Sub dedoublonner()
set dico = createobject("Scripting.Dictionary")
with activesheet.cells(1, 1).currentregion
    t = .value
    for i = lbound(t) to ubound(t)
        if not dico.exists(t(i, 3)) or iserror(t(i, 3)) then 'merci Xorsankukai :)
            n = n + 1
            dico(t(i, 3)) = ""
            for k = lbound(t, 2) to ubound(t, 2)
                t(n, k) = t(i, k)
            next k
        end if
    next i
    .clearcontents
    if n > 0 then .resize(n, ubound(t, 2)).value = t
end with
end sub

Cdlt,

Re,

Merci GUELLILA et 3GB pour la solution via macro, , ça satisfait pleinement ma curiosité,

@3GB: lorsque je teste ton code , j'ai une erreur ici:

capture

que j'arrive à palier avec

capture

En tout cas, joli code,

Bon dimanche à tous,

Cordialement,

Salut Xorsankukai !

Oui, j'avais un petit doute à ce niveau. Je pense qu'en chargeant le tableau t avec la propriété .value2, ça pourrait passer (je n'ai pas essayé). Par contre, il est possible que ça perturbe la reconnaissance des doublons puisqu'il s'agit de décimaux...

En tout cas, merci pour la confirmation !

A plus,

Rechercher des sujets similaires à "supression doublons"