XL 2016 Conserver les données uniques (VBA)

Kirseth

XLDnaute Nouveau
Bonjour à tou(te)s,

J’espère que vous allez bien !
Encore une fois, j'aurai besoin de votre aide avisée.

En pièce jointe un exemple.
J'ai mis en place une macro avec un bouton pour supprimer les doublons, en me basant sur la colonne E
Toutefois, j'aimerai que cela ne garde pas 1 ligne sur 2 mais supprime l'ensemble des lignes en doubles (pour ne conserver que les valeurs uniques.)
J'ai regardé les différents fils sur le sujet, mais j'avoue ma méconnaissance profonde du VBA.

Auriez vous quelques pistes ou exemples a me soumettre ?
Un grand merci par avance :)
 

Pièces jointes

  • ENCOURS GAR MTP - Valeurs Uniques.xlsm
    63.8 KB · Affichages: 9

Hasco

XLDnaute Barbatruc
Bonjour,

Je ne comprends pas ce qui ne vous convient pas avec votre macro. Elle semble faire le job.
Elle semble supprimer 1 ligne sur deux car la majorité de vos lignes vont par paires (seule 28 lignes échappent à la paire).

cordialement
 

Hasco

XLDnaute Barbatruc
Bonjour,

Personne ne vous parle de conserver une ligne sur deux. C'est ce que fait votre macro parce que vos lignes vont par paires c'est tout. Si elles allaitent par trois elle supprimerait 2 lignes sur 3.

Dans le fichier joint, j'ai rajouté une colonne qui compte les doublons sur colonne E. Après traitement, il y en a plus.

Ou alors il faut que vous définissiez mieux ce qu'est un doublon pour vous dans vos données.
 

Pièces jointes

  • ENCOURS GAR MTP - Valeurs Uniques.xlsm
    128.2 KB · Affichages: 2

Kirseth

XLDnaute Nouveau
Bonjour,
Merci pour votre retour et le fichier.
Effectivement, je n'ai peut être pas été assez explicite.

Dans le fichier que vous avez retourné, la colonne qui compte, donne 1 après traitement. Hors, je souhaiterai qu'elle donne 0.
A chaque fois qu'est détectée une valeur en double, idéalement, les 2 lignes devraient être supprimées.

Mais cela semble bien compliqué :(
 

Hasco

XLDnaute Barbatruc
Bonjour,

Voici qui conservera les 28 lignes qui n'ont pas de doublons.
Toutes les lignes qui ont un doublons sont supprimées.

VB:
Sub DEDOUBLONNAGE_NUM_BON()
    Dim Plage As Range
    '
    ' Définition de la plage des données ( sans les 2 lignes d'entête)
    With ThisWorkbook.Sheets("ENCOURS GAR MTP ").Range("A4").CurrentRegion
        Set Plage = .Offset(2).Resize(.Rows.Count - 2)
    End With
    '
    '
    With Plage.Columns(Plage.Columns.Count + 1)
        '
        ' Si N° bon est en double, mettre un x sinon un 0
        .Formula = "=IF(COUNTIF(" & Plage.Columns(5).Address(True, True) & ",$E6)>1,""x"",0)"
        '
        ' Sélectionner les cellules ayant un texte dans la plage
        ' puis supprimer les lignes correspondantes
        On Error Resume Next    'Erreur si aucune occurence n'est trouvée
        Intersect(Plage, .SpecialCells(xlCellTypeFormulas, 2).EntireRow).Delete xlShiftUp
        On Error GoTo 0
        '
        ' on vide la colonne
        .Value = Empty
    End With
End Sub

P.S. vous avez une espace trainante en fin de nom de feuille !!!
cordialement
 

Pièces jointes

  • ENCOURS GAR MTP - Valeurs Uniques.xlsm
    108.3 KB · Affichages: 2

Kirseth

XLDnaute Nouveau
Bonsoir,

Un très grand Merci ! :)
C'est exactement le résultat attendu et j'avoue quand je vois le code utilisé, je n'y serai pas arrivé.
Mon VBA est trop balbutiant.
Je vais m'atteler a travailler a comprendre les différentes étapes de celui que vous avez utilisé.

P.S : Merci pour l'espace. J'ai corrigé

Excellente fin de Week End a vous.
 

Discussions similaires

Statistiques des forums

Discussions
299 845
Messages
1 979 505
Membres
206 754
dernier inscrit
Jacqueline ANDRAULT