Bonjour,

Je cherche à supprimer d'un tableau les lignes qui ne contiennent pas certaines données en colonne A.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
' défini le nombre de lignes
    Dim lastRowQBAS As Long
    lastRowQBAS = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    ' si Ax <> BAS ou HAUT ou BLOP ..... alors supprime ligne entière
    For LIGNE = 9 To lastRowQBAS
       If Range("A" & LIGNE).Text <> "BAS" And Range("A" & LIGNE).Text <> "BLOP" And Range("A" & LIGNE).Text <> "TRUC" And Range("A" & LIGNE).Text <> "HAUT" And Range("A" & LIGNE).Text <> "VRAI" And Range("A" & LIGNE).Text <> "FAUX" Then
           Range("A" & LIGNE).EntireRow.Delete
           LIGNE = LIGNE - 1 'sinon efface 1 résultat sur 2
       End If
    Next LIGNE
Le code marche mais est extrêmement long (tableau de plus de 10 000 lignes).
- y a-t-il un moyen de le rendre plus rapide ? (j'ai pensé à "for each", mais je n'ai pas su l'utiliser).
- peut-on simplifier la ligne "IF" du style "If Range("A" & LIGNE).Text <> "BAS" And "BLOP" And "TRUC" And ......" sans redonner le Range à chaque fois ?

Merci d'avance