Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière ligne)
Dim x As Integer 'déclare la variable x (incrément)
Application.ScreenUpdating = False 'masque les changements à l'écran
dl = Range("A65536").End(xlUp).Row 'définit la dernière ligne
For x = dl To 2 Step -1 'boucle inversée de la dernière ligne à la ligne 2
If Cells(x, 14).Value = 0 And Cells(x, 14).Value <> "" Then 'condition 1 : si la cellule de la colonne N=0 (sans être vide)
If Cells(x + 1, 15).Value <> "" Then 'condition 2 : si la cellule une ligne en dessous en colonne 0 n'est pas vide
Range(Cells(x, 15), Cells(x, 15).End(xlDown)).EntireRow.Delete 'supprime les lignes
Else 'sinon
Cells(x, 15).EntireRow.Delete 'supprime la ligne
End If 'fin de la condition 2
End If 'fin de la condition 1
Next x 'prochaine ligne de la boucle
dl = Range("A65536").End(xlUp).Row 'redéfinit la dernière ligne
For x = dl To 2 Step -1 'boucle inversée de la dernière ligne à la ligne 2
If Cells(x, 15).Value = "" Then 'condition : si la cellule de la colonne O est vide
Cells(x, 15).EntireRow.Delete 'supprime la ligne
End If 'fin de la condition
Next x 'prochaine ligne de la boucle
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub