Supprimer Doublons VBA

Bonjour le forum,

J'aimerais créer un code VBA qui permet de dire "Tant que tu délectes la même chose qu'à la ligne suivante, tu supprimes le contenu de la cellule suivante"

dlig = .Range("A" & Rows.Count).End(xlUp).Row

For l = 3 To dlig
    If .Range("A" & l).Value = .Range("A" & l + 1).Value Then
        Do While .Range("A" & l).Value = .Range("A" & l2 + 1).Value
            l2 = l2 + 1
        Loop
            .Range(Cells(l + 1, "A"), Cells(l2, "A")).Clear
    End If
Next l

J'ai essayé un début juste au dessus mais je bloque sur la boucle for qui m'embête. Il faudrait que l'itération à chaque "tour" de boucle for soit de la dernière ligne que j'ai effacé. Typiquement, dans mon exemple ci dessous, la boucle for débute à 3 puis une fois que le boucle while a fini donc que la celulle "A5" et "A6" on été supprimé alors la boucle for reprend à 6 (je me doute que ce n'est pas très clair).

J'ai essayé d'utiliser "Step" mais sans succès. Je suis aussi peut-être parti sur une mauvaise piste.

image

Merci par avance,

@+

Bonjour

De base il faut partir du bas vers le haut. Donc

For l = dlig To 3 step -1

Ensuite utiliser, DELETE plutôt que CLEAR

Mais vous avez plus simple, puisque vous disposez d'une fonction prête à l'emploi dans les manu d'excel. Sinon par VBA pour votre fichier cela donne ceci

ActiveSheet.Range("$A$3:$A$12").RemoveDuplicates Columns:=1, Header:=xlNo

Cordialement

Bonjour Dan, le forum,

Je n'avais pas pensé à ce principe de partir du bas vers le haut. Mais c'est tout de suite plus logique.

Pourquoi mieux vaut-il appliquer DELETE ?

ActiveSheet.Range("$A$3:$A$12").RemoveDuplicates Columns:=1, Header:=xlNo

Le problème avec la fonction ci dessus, c'est qu'elle me supprime les cellules qui sont des doublons. J'aimerais juste enlever le contenu de celles-ci (comme sur mon image).

Je pense utiliser la boucle for comme indiqué dans votre message.

Je vous dirais par la suite si je bloque toujours.

Merci encore.

Bien cordialement,

Je viens de tester à l'instant et c'est très simple à utiliser.

Merci beaucoup !

PS : Pour ceux qui passent et qui voudrait voir la solution de Dan appliqué :

With ThisWorkbook.Worksheets(1)

dlig = .Range("A" & Rows.Count).End(xlUp).Row

For l = dlig To 3 Step -1
    If .Range("A" & l).Value = .Range("A" & l - 1).Value Then
        .Range("A" & l).Clear
    End If
Next l

End With

Bien cordialement,

Bonjour

Bien que votre problème soit solutionné, je vous réponds à vos questions

Le problème avec la fonction ci dessus, c'est qu'elle me supprime les cellules qui sont des doublons. J'aimerais juste enlever le contenu de celles-ci (comme sur mon image).

Pourquoi mieux vaut-il appliquer DELETE ?

Je n'avais pas compris que vous vouliez laisser des cellules vides (malgré que votre image était claire ). L'utilisation de DELETE était dédiée à la suppression de lignes. Dans votre cas la boucle était donc indiquée. Toutefois, au vu de votre code, il faut veiller à ce que votre colonne contenant les doublons soit bien triée avant d'exécuter le code. J'aurais donc ajouté un fonction de Tri avant de l'exécuter.

Cordialement

Merci de votre réponse, je m'en suis rendu compte en utilisant DELETE que celle-ci supprimait les lignes. Merci de votre confirmation.

Bonne idée le tri en amont ! Je penserais à le faire.

Bien cordialement,

@+

Rechercher des sujets similaires à "supprimer doublons vba"