Supprimer une ligne doublon par formule

Bonjour,

Je souhaiterais supprimer une ligne complète si doublon (critères définis dans ma formule SI).

J'ai plus retrouver mes lignes doublons, toutefois, je ne trouve pas la fonction me permettant de les supprimer sans passer par une macro.

=SI(SOMMEPROD((C2:C18=C100)*(D2:D18=D3))>0;"doublon";"ok")

Pourriez-vous m'aiguiller sur la meilleure solution à suivre svp ?

Merci d'avance pour votre aide,

Bonne journée,

Luciole

Bonjour,

à ma connaissance il n'est pas possible de supprimer des lignes via une formule.

c'est soit, une suppression manuelle, soit l'option supprimer les doublons (dans le menu données), soit power query, soit une macro.

Ah ok, ça marche, dans ce cas là je vais passer par une macro.

Pourriez-vous m'aider à démarrer svp ?

Merci bcp

J'ai utilisé l'enregistreur de macro finalement, merci tout de même pour votre réponse.

Bon après-midi,

Luciole

Bonjour,

Tu as plusieurs solutions,

  • la méthode "AdvancedFilter" de l'objet "Range" qui te permet de filtrer les doublons et avec l'aide d'une feuille intermédiaire de les supprimer définitivement (exporter et rapatrier), c'est ce que je te conseille car probablement le plus rapide (voir code ci-dessous que j'ai proposé dans un autre post). Ici, est considéré comme doublon les données strictement identiques sur toute la ligne dans toutes les cellules
  • l'utilisation de l'objet Dictionnaire (Dictionary)
  • l'utilisation de boucles de comparaisons
Sub Test()

    Dim Plage As Range

    'défini la plage sur la feuille "Feuil1" à partir de A1...
   Set Plage = DefPlage(Worksheets("Feuil1"), 1, 1)

    '...puis filtre les doublons en copiant le résultat sur la feuille "Feuil2" à partir de A1
    Plage.AdvancedFilter xlFilterCopy, , Worksheets("Feuil2").Range("A1"), True

    Plage.AutoFilter

    'supprime tout ce qui se trouve sur la feuille "Feuil1"
    Worksheets("Feuil1").Cells.Clear

    'redéfini la plage sur la feuille "Feuil2"
    Set Plage = DefPlage(Worksheets("Feuil2"), 1, 1)

    'transfère les valeurs de Feuil2 à Feuil1
    With Worksheets("Feuil1"): .Range(.Cells(1, 1), .Cells(Plage.Rows.Count, Plage.Columns.Count)).Value = Plage.Value: End With

    'puis vide Feuil2
    Worksheets("Feuil2").Cells.Clear

End Sub

Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function

Je te remercie pour ton retour, toutefois cela est bien compliqué pour moi, même si tu as détaillé chacune des actions.

Il va vraiment falloir que je prenne le temps de regarder.

Dans tous les cas, merci,

Luciole

Rechercher des sujets similaires à "supprimer ligne doublon formule"