Bonjour, j'ai réalisé une boucle for qui me permet de filtrer des données d'un plage en les supprimant pour des valeurs inférieures et supérieures.
Voici le code :
Mon soucis c'est que si la condition est vrai, la ligne est donc supprimée mais l'incrémentation fait qu'on saute une ligne et que donc chaque ligne est "oubliée" lorsque la condition est vrai.
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 Public Sub FiltreValeur(plage As Range, min As Integer, max As Integer) Dim rb As Range For Each rb In plage If rb < min Then rb.EntireRow.Delete End If Next For Each rb In plage If rb > max Then rb.EntireRow.Delete End If Next end sub
En claire : lorsque la ligne 2 est supprimée, la ligne 3 devient la ligne 2 et donc après l'incrémentation, la ligne 3 (qui est devenue ligne 2) n'est plus vérifiée.
Je voudrais faire comprendre à la boucle de pas incrémenter lorsque la condition est vrai. De manière à ce que toute les lignes soient vérifiées.
A la place de "rb.EntireRow.Delete" je peux utiliser "rb.ClearContents" mais à ce moment je me retrouve avec des cellules vides ce que je veux pas.
Merci pour votre aide!
Partager