Bonjour Thombar, Michel, le Forum
Ah ! il me semble que tu n'avais pas précisé que tu avais des cellules vides. Ce n'est pas grave mais c'est une autre approche :
Option Explicit
Option Compare Text 'pour comparer "LB" ou "lb"
Sub CLeanAllExceptLB()
Dim L As Integer
With Sheets(1)
For L = 6 To .Range("N65536").End(xlUp).Row
If Left(.Range("N" & L).Text, 2) <> "LB" Then
.Range("N" & L).ClearContents
End If
Next
On Error Resume Next
.Range("N6:N" & L).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
Explications : Si il y a plusieurs cellule vides contigues dans ta plage (par exemple N10, N11, N12 et N13 sont vides), il faut que le user click et reclick jusqu'à ce qu'il n'y en ait plus des cellules vides !!! si on utilise les boucles proposée plus haut...
Ce phénomène est dû à "EntireRow.Delete" qui, quand cette instruction est utilisée au cours d'un boucle de type "For Each Cell in Range", finit par faire un décalage, ce qui est logique, on enlève des Rows alors que le "compteur" de la boucle tourne....Alors que la méthode que je propose si dessus, dans la boucle on ne fait que mettre les cellules à Vide, puis on gère la suppression des vides...
Bonne Soirée
@+Thierry