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:
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).
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
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
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?
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
Merci par avance,
Partager