Supprimer lignes sous condition et nombre de lignes aléatoire

Fermé
Elo2109 Messages postés 9 Date d'inscription samedi 12 octobre 2013 Statut Membre Dernière intervention 30 juin 2016 - 30 juin 2016 à 15:12
Elo2109 Messages postés 9 Date d'inscription samedi 12 octobre 2013 Statut Membre Dernière intervention 30 juin 2016 - 30 juin 2016 à 17:32
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 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 30/06/2016 à 16:27
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 samedi 12 octobre 2013 Statut Membre Dernière intervention 30 juin 2016
30 juin 2016 à 16:43
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 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 30/06/2016 à 17:34
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 samedi 12 octobre 2013 Statut Membre Dernière intervention 30 juin 2016
30 juin 2016 à 16:55
Il n'y a pas moyen de mettre quelque part:
DernLigne = Range("A" & Rows.Count).End(xlUp).Row


Cordialement,
0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
30 juin 2016 à 17:18
ça y est déjà
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
0
Elo2109 Messages postés 9 Date d'inscription samedi 12 octobre 2013 Statut Membre Dernière intervention 30 juin 2016 > ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024
30 juin 2016 à 17:32
Ouuuups désolée
0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
30 juin 2016 à 17:27
Un exemple avec l'option 2
http://www.cjoint.com/c/FFEpAFUNCTu

Cdlmnt
0