Supprimer lignes sous condition et nombre de lignes aléatoire

Elo2109 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Elo2109 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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 !!

A voir également:

2 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Elo2109 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Elo2109 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Il n'y a pas moyen de mettre quelque part:
DernLigne = Range("A" & Rows.Count).End(xlUp).Row


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

Cdlmnt
0