Bonjour le Forum,
Un modeste astuce.
Pour supprimer les lignes d'une feuille de calcul, s' l'une d'elle contient un mot dans une cellule, il est habituel de
- considérer la dernière ligne
- tester le mot
- supprimer la ligne
- boucler jusqu'à la première ligne en utilisant un pas négatif de -1.
Récemment, pour connaître la dernière cellule vide d'une plage, l'ami Patrick m'a suggéré, judicieusement, l'argument Previous sur les cellules - spéciales - vides.
Dès lors, je me suis demandé comment appliquer ce processus au test décrit ci-dessus.
Réponse: Méthode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Public Sub testfindprev()
Dim derlign As Long
Dim c As Range
Dim ladress As String
With Worksheets("testprev")
derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
With .Range(" A1:A" & derlign)
Set c = .Find(What:="tata", LookIn:=xlValues, SearchDirection:=xlPrevious)
If Not c Is Nothing Then
Do
ladress = c.Address
c.EntireRow.Delete
Set c = .FindPrevious(After:=.Range(ladress))
Loop While Not c Is Nothing
End If
End With
Set c = Nothing
End With
End Sub |
Nous remarquons ici que l'enregistrement de l'adresse de la ligne à supprimer est obligatoire.
En effet, coder
1 2
| c.EntireRow.Delete
Set c = .FindPrevious(After:=c) |
implique une erreur
1004: Impossible de lire la propriété FindPrevious de la classe Range
Ce qui est logique du fait de la suppression de la ligne.
Par avance, je vous remercie pour vos remarques et commentaires.
En vous souhaitant une agréable journée.
Marcel
Partager