XL 2016 Conserver les données uniques (VBA)

  • Initiateur de la discussion Initiateur de la discussion Kirseth
  • Date de début Date de début

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 !

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

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
 
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

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é 🙁
 
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

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.
 
- 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
Retour