[Résolu]Boucle for sur Range, qui supprime ligne si Cell <> resultat recherché

dodoc5

XLDnaute Nouveau
Bonjour,

Je galère sur un truc tout bête.

Je dois supprimer des lignes qui ne correspondent pas à ce que je recherche dans une colonne.

ça donne :

Ce code ne fonctionne pas, il veut un Next après le End If

Code:
Dim Cell As Range
   
For Each Cell In Range("A1:A20")
    If Cell.Text Like Range("C2") Then
        Next Cell
    Else
        Cell.EntireRow.Delete
    End If

à la base j'avais juste

Code:
Dim Cell As Range
   
For Each Cell In Range("A1:A20")
    If Not Cell.Text Like Range("C2") Then Cell.EntireRow.Delete
Next Cell

Sauf que quand il supprimait une ligne la ligne suivante est décrémenté, cependant vu que je fais Next Cell, la fonction ne vérifie pas la ligne décrémentée.

En gros :
[A]
[1]Poisson
[2]Poisson
[3]Poulet
[4]Poulet
[5]Poisson

On veut supprimer Poulet

la suppression fait

[A]
[1]Poisson
[2]Poisson
---------
[4-1]Poulet (Cette cellule n'est pas vérifiée au prochain test car elle devient n°3, ligne dégà vérifiée)
[5-1]Poisson (cette cellule est vérifiée car elle correspond bien au pas suivant de la boucle)


Je bloque sur cette bétise qui doit se régler en un rien de temps ...

Un coup de pouce ?



Edit : c'est ça merci pour le coup de main =)
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Boucle for sur Range, qui supprime ligne si Cell <> resultat recherché

Bonsoir,

Ce code ne fonctionne pas, il veut un Next après le End If
bah pourquoi ne pas lui ddonner...

ceci :
Code:
For Each Cell In Range("A1:A20")
    If Cell.Text Like Range("C2") Then
        Next Cell
    Else
        Cell.EntireRow.Delete
    End If

deviendrait :
Code:
For Each Cell In Range("A1:A20")
    If Cell.Text Like Range("C2") Then
           Else
        Cell.EntireRow.Delete
    End If
Next Cell

A noter quand tu supprimes des lignes il est préférable d'utiliser une boucle "for" et non "for each" afin de pouvoir commencer par la fin et remonter, ceci permet que lorsque la condition est vérifiée 2 fois de suite de ne pas en rater...

bonne soirée
@+
 
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Boucle for sur Range, qui supprime ligne si Cell <> resultat recherché

Bonsoir

il faut décrémenter quand on efface

du genre

for i = 20 to 1 step -1
If range("A" & i).value <> Range("C2").value Then range("A" & i).EntireRow.Delete
Next Cell
next


edit : bonsoir Pierrot, même conclusion sur le step -1
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 983
Membres
103 690
dernier inscrit
LeDuc