Supprimer lignes sous condition et nombre de lignes aléatoire

Elo2109 Messages postés 9 Statut Membre -  
Elo2109 Messages postés 9 Statut Membre -
Bonjour,

Je souhaiterais savoir comment supprimer une ligne entière si la cellule de la colonne 76 contient "t".
Sachant que la feuille excel contient entre 40 000 et 60 000 lignes, le nombre de ligne varie de manière aléatoire.

J'ai essayé cette macro mais, forcément, ça ne fonctionne pas...
Sub Macro5()

' 14) Suppression lignes hors scope
Dim DernLigne As Long, DernColonne As Integer, i As Integer
'Dernière ligne colonne A
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
For i = Cells(1, 76) To DernLigne
If Cells(i, 76).Value = "t" Then Cells(i, 76).EntireRow.Delete
Next
End Sub

Je vous remercie pour votre aide !!

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Const cotest = 76    ' colonne a tester
    Const vatest = "t"  ' valeur test
    Const lideb = 2     ' premiere ligne
    
    Sub SuppLignes()
    Dim li As Long, lifin As Long
    Application.ScreenUpdating = False
    lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    For li = lifin To lideb Step -1
      If Cells(li, cotest).Value = "t" Then Rows(li).Delete
    Next li
    Application.ScreenUpdating = True
    End Sub


    Modifies les valeurs des constantes selon ta configuration

    Cdlmnt
    0
    1. Elo2109 Messages postés 9 Statut Membre
       
      Merci beaucoup !! Votre macro exécute exactement ce que je voulais! y aurait-il un moyen pour que l'action prenne moins de temps à se réaliser ?
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Il y a peut être des solutions, je vois (à priori) deux cas de figure
      1. On a des gros paquets de lignes contiguës à supprimer
      2. La feuille n'est pas trop grosse, on peut faire une copie nettoyée en mémoire puis copier en bloc dans la feuille

      Cdlmnt
      0
    3. Elo2109 Messages postés 9 Statut Membre
       
      Il n'y a pas moyen de mettre quelque part:
      DernLigne = Range("A" & Rows.Count).End(xlUp).Row


      Cordialement,
      0
    4. ccm81 Messages postés 11033 Statut Membre 2 434
       
      ça y est déjà
      lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
      0
      1. Elo2109 Messages postés 9 Statut Membre > ccm81 Messages postés 11033 Statut Membre
         
        Ouuuups désolée
        0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Un exemple avec l'option 2
    http://www.cjoint.com/c/FFEpAFUNCTu

    Cdlmnt
    0