jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 13 févr. 2009 à 09:46
Bonjour,
Je suppose que tu cherches à supprimer lorsque le mot "Façon" n'est pas présent quelque-part dans le contenu de la cellule d'une colonne connue (et pas dans toutes les cellules).
Méthode alors :
Parcourir toutes les cellules de cette seule colonne en remontant du bas vers le haut (utilisation d'une boucle For to step - 1) afin de ne pas risquer de te référer à une ligne qui n'existe plus du fait de la suppression
Pour chaque cellule examinée : utiliser Instr plutôt que Likeet supprimer toute la ligne si instr = 0
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 févr. 2009 à 10:14
piste à explorer:
Sub Filtering()
Dim oResult As Range
Dim oStart As Range
Dim nCount As Long
Set oStart = ActiveSheet.Range("C2")
Do
Set oResult = ActiveSheet.Range("C:C").Find("Façon", oStart, LookAt:=XlLookAt.xlPart, MatchCase:=False)
nCount = oResult.Row - oStart.Row
If nCount > 1 Then
ActiveSheet.Range(oStart.Offset(1).EntireRow, oResult.Offset(-1).EntireRow).Delete
Set oStart = oStart.Offset(1)
ElseIf nCount = 1 Then
Set oStart = oResult
Else
ActiveSheet.Range(oStart.Offset(1).EntireRow, oStart.SpecialCells(xlCellTypeLastCell).EntireRow).Delete
Exit Do
End If
Loop Until oResult Is Nothing
End Sub
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 févr. 2009 à 11:07
1- tu réactives pas le ScreenUpdating
2- tu utilises Like, qui est lent. utilises au pire InStr
3- Range("C" & i) => catastrophe, d'autant que tu as déjà cherché une référence à ta cellule
4- tu parcoures des cellules certainement vierges, puisque tu pars arbitrairement de 65536
Konyl
Messages postés25Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention 7 octobre 2010 14 févr. 2009 à 18:52
1- tu réactives pas le ScreenUpdating
En fait j'ai enlevé la ligne après coup, le scrUpdt est déjà actif.
2- tu utilises Like, qui est lent. utilises au pire InStr
pour 62000 ligne ça prend environs 1,5 minutes, sur un process globale de 3 heures... alors les perf la, ça me va.
3- Range("C" & i) => catastrophe, d'autant que tu as déjà cherché une référence à ta cellule
J'ai pas comrpis la ?
4- tu parcoures des cellules certainement vierges, puisque tu pars arbitrairement de 65536
Mon fichier possède une taille variable de 40000 a 65000 lignes voila pourquoi.
Vue l'urgence opérationnelle qui était la mienne, je n'ai pas fait un excel down pour trouver la dernière ligne.
5- ah, et tu ne déclares toujours pas tes variables (i, en l'occurrence)
Le script fonctionne comme ça, je ne comprend pas ton propos ?