Bonjour à tous,

Je suis confronté à un petit souci, et je me demandais s'il existait une solution simple en VBA:

Prenons en exemple un tableau de 20 lignes et plusieurs colonnes, dont la première colonne est composé des valeurs "ok" ou "ko". Je souhaite mettre en place un code permettant de supprimer toutes les lignes dont la 1ère colonne a la valeur "ko".

Pour cela, j'ai écrit le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
i = 20
Do While i <> 1
   If Range("A!" & i) = "no" Then
      Rows(i).Delete
   End If
    i = i - 1
Loop
En effet, je suis obligé de décrémenter car en incrémentant, cela sauterait des lignes. (si par exemple la ligne 3 comporte "ko" ; elle est effacée donc la ligne 4 devient 3 ; la macro passe à la ligne 4 et saute donc une valeur).
Cela fonctionne parfaitement ; néanmoins, dans le but d'optimiser la macro et la rendre plus rapide (les fichiers que je travaille comportement des milliers de lignes), j'aurais souhaité utiliser la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
For Each Cell in Range("A:A")
   If Cell.Value = "ko" Then
      Cell.Rows.Delete
   End If
Next Cell
Le souci est que dans ce cas précis, on incrémente et des lignes sont donc sautés. Y a-t-il un moyen de résoudre ce souci?

Merci par avance,