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
Code : Sélectionner tout - Visualiser dans une fenêtre à part FindPreviousNous remarquons ici que l'enregistrement de l'adresse de la ligne à supprimer est obligatoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
En effet, coder
implique une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 c.EntireRow.Delete Set c = .FindPrevious(After:=c)
Ce qui est logique du fait de la suppression de la ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 1004: Impossible de lire la propriété FindPrevious de la classe Range
Par avance, je vous remercie pour vos remarques et commentaires.
En vous souhaitant une agréable journée.
Marcel
Partager