Recherche Doublon

Bonjour à tous,

J'aimerais faire une macro qui permettent par exemple si tu as une valeur en A1 et que tu retrouves cette valeur en B1 ou en D1 par exemple.

La macro supprime la cellule ou le doublon a été trouvé. J'ai fait un morceau de code mais qui ne fonctionne pas.

Pour le moment ca supprime si seuleument et seuleument si la valeur de la cellule A1 et identique à la valeur de la cellule B1.

Est-ce que quelqu'un pourrait m'aider pour rendre ca plus dynamique ou me guider vers une piste?

Ne faurait-il par faire une deuxième boucle avec un For each.

Merci beaucoup,

Marion

Option Explicit

Sub DeleteDoublon()

Dim nc As Integer, nl As Integer
nl = 20
For nc = 3 To 150
    If Cells(nl, nc).Value = Cells(nl, nc + 1).Value Then
    Cells(nl, nc + 1).Clear
    End If

Next

End Sub

Bonjour,

Un fichier exemple serait plus utilise q'une macro non fonctionnel dont on ne comprend pas l'utilisation.

For NC 3 à 150 vous avez vraiment 150 colonnes ??

Bonjour Marion,

ne connaissant pas bien le contexte, je me demande ici si VBA est vraiment utile, la suppression des doublons est déjà intégrée à Excel, si le but est bien de supprimer complètement les doublons, il faut alors aller dans l'onglet "Données" puis cliquer sur suppression des doublons, la démarche est également consultable ici : https://apprendreexcel.com/suppression-doublons-excel/

Si toutefois le but est réellement de passer par VBA, alors je conseille d'utiliser un objet Dictionary, il faudra ajouter la référence manuellement via Outils puis Références si tu veux le déclarer sans passer par la fonction CreateObject, la bibliothèque s'appelle "Microsoft Scripting Runtime" (voir image ci-dessous)

image

Il est également possible d'utiliser une Collection qui est disponible directement, mais le Dictionary est plus pratique car il a une fonction Exist, il est ensuite facile de vérifier si la valeur est doublon ou non, à chaque ligne tu regardes si la valeur est présente dans le dictionnaire, si c'est le cas tu supprimes la ligne directement ou l'enregistres temporairement dans un tableau ou une variable de lignes à supprimer pour toutes les enlever d'un coup, si elle n'est pas présente tu l'ajoutes au dictionnaire et passe à la ligne suivante.

Bonjour le fil,

On peut aussi utiliser une simple fonction (valeurs avec doublon en colonne A)

=NB.SI(A$1:A2;A2)

un filtre : >1

et on supprime toutes les lignes présentes

@+

Bonjour à tous j'ai trouve ca qui correspond à mon besoin :

Sub Doublon()

Dim Plage As Range
Dim Cel As Range

With Worksheets("Sheet1")

'en colonne "A" à partir de A2 'en colonne "C" à partir de C20
Set Plage = .Range(.Cells(20, 3), .Cells(20, 150))

End With


'boucle la plage de la feuille "Compte" et cherche chaque valeur
'en correspondance exacte dans la plage de la feuille "Source"
For Each Cel In Plage

If Application.CountIf(Plage, Cel.Value) > 1 Then

Cel.Delete

End If

Next Cel

End Sub

Rechercher des sujets similaires à "recherche doublon"