Supprimer lignes dont 2 valeurs sont de signes opposés suivant conditions

Bonjour,

Vous trouverez ci-joint mon fichier excel "test".

Je voudrais supprimers les lignes dont la somme des valeurs présentes dans la colonne N sont égales à 0. Ces lignes doivent aussi avoir la même valeur en colonne A et en colonne U.

J'ai mis en surbrillance 2 lignes qui répondent à ces conditions afin d'illustrer mes propos.

Ces lignes s'annulent et viennent donc polluer mon fichier sur lequel je dois ensuite appliquer des formules qui ne fonctionnent pas à cause de celles-ci.

J'ai trouvé ce code pour supprimer deux lignes qui ont des valeurs de signes opposés auxquels il faudrait ajouter mes conditions qui vérifient que les 2 lignes trouvées y répodent avant de les supprimer mais je ne maitrise pas assez pour adapter le code...

 Sub supp_lignes()

 'on déclare les variables
 Dim Valeur_Cherchee As Long
 Dim PlageDeRecherche As Range, Trouve As Range

 For I = 2 To Range("A65536").End(xlUp).Row 'on lance une boucle qui va tester les lignes 2 à la dernière renseignée(colonne A)
If Cells(I, 1) = "" Then Exit For 'Si cellule col A vide on sort de la boucle

If Cells(I, 2).Value = "op" And InStr(Cells(I, 3).Value, "-") And I >= 2 Then 'on vérifié qu'en B on a "OP" et le signe "-" en C
Valeur_Cherchee = Replace(Cells(I, 3).Value, "-", "") 'on récupère la valeur absolue du chiffre
Set PlageDeRecherche = Cells(I, 3).EntireColumn 'on déclare la plage de recherche - ici colonne C
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) 'on lance la recherche
If Trouve Is Nothing Then
'si on trouve rien on ne fait rien
Else 'sinon si on trouve on fait :
If I < Trouve.Row And Trouve.Row <> I Then 'si I inf à la ligne trouvée
Cells(Trouve.Row, 3).EntireRow.Delete 'on sup la ligne trouvée
Cells(I, 3).EntireRow.Delete 'on sup la ligne I
I = I - 1 'I = I-1 pour ne pas oublier de ligne à cause de la sup
ElseIf I > Trouve.Row And Trouve.Row <> I Then
Cells(I, 3).EntireRow.Delete
Cells(Trouve.Row, 3).EntireRow.Delete
I = I - 1
End If
End If
End If
 Next I

 End Sub

merci d'avance pour votre aide,

Wish

19test1.xlsm (20.13 Ko)

Bonjour Wlish, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim PL As Range 'déclare la variable PL (PLage)

Set OS = Worksheets("Source") 'définit l'onglet OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set PL = OS.Range("A1") 'définit la plage PL
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeur TV (en partant de la seconde)
    For J = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes J du tableau des valeur TV (en partant de la seconde)
        If I <> J Then 'condition 1 : si I est différent de J
            'condition 2 : si les données en colonne A sont identiques et les données en colonne M sont identique mais de signe opposé et les données en colonne U sont identiques
            If TV(I, 1) = TV(J, 1) And TV(I, 14) = -TV(J, 14) And TV(I, 21) = TV(J, 21) Then
                'redéfinit la plage PL
                Set PL = IIf(PL.Cells.Count = 1, Application.Union(OS.Rows(I), OS.Rows(J)), Application.Union(PL, OS.Rows(I), OS.Rows(J)))
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
PL.Delete 'supprime la plage PL
End Sub

Bonjour Thautheme,

et merci déjà !

C'est presque ça.

J'ai essayé dans mon fichier original et cela supprime trop de ligne... Dans la colonne D, outre les valeurs "", "101" ou "102", il y a aussi des lignes avec la valeur 103, 903, etc.

Parmi ces lignes, il y en a parfois qui s'annulent. Les lignes avec la valeur "103" sont égales à "0" et peuvent avoir des données en colonne A et U identiques... et onc sont supprimées aussi.

Par conséquent, il faudrait une condition qui dit

"chercher uniquement les lignes avec la valeur "102" en colonne D et ne supprimer que la ligne valeur "101" en colonne D qui correspond (dont les valeurs en colonne N s'annulent, et qui ont les mêmes valeurs en colonne A, et qui on les mêmes valeurs en colonne U)"

Désolé je n'étais pas clair depuis le début c'est ma faute.

Rechercher des sujets similaires à "supprimer lignes valeurs signes opposes suivant conditions"