Excel 2003, supprimer ligne si E est supérieur à 365

Bonjour à tous,

Voici 6 ans que je n'ai pas touché au VBA " he oui, retraite " et je n'arrive pas à supprimer la totalité des lignes dont la valeur en cellule E est supérieur à 360.

J'ai essayé mais il reste des lignes qui auraient dû disparaître, je ne vois pas ou est mon erreur .

J'en appel à votre bonté et votre savoir pour me sauver la mise.

Il s'agit d'un fichier de gestion des formations.

Merci à vous pour votre temps et votre savoir

Excusez moi, Excel 2007

Bonjour,

Un test via filtre puis suppression des lignes affichées (donc non filtrées) :

Sub DEL()
Range("A1").AutoFilter Field:=5, Criteria1:=">360"
Range("A2:E" & Range("E" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Rows.EntireRow.Delete
ActiveSheet.ShowAllData
End Sub

Cdlt,

Bonsoir,

Merci beaucoup, ça fonctionne.

J'étais sur le test de ce code:

Sub supprimme_Sup365()
Range("E1").Select

With Range(Range("E1"), Range("E65500").End(xlUp))
.AutoFilter Field:=1, Criteria1:=">365"
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub

mais mes titres disparaissaient.

Reste plus qu'à enlever les flèches de filtrage.

A+

Robert

Bonjour,

C'est "normal" comme votre range comprend la 1ère ligne, elle est considérée comme affichée et donc supprimée.

Pour les flèches de filtre :

Sub DEL()
Range("A1").AutoFilter Field:=5, Criteria1:=">360"
Range("A2:E" & Range("E" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Rows.EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End Sub

Cdlt,

Bonjour Boby71C, Ergotamine,

...J'ai essayé mais il reste des lignes qui auraient dû disparaître, je ne vois pas ou est mon erreur...

En commençant pas le début du tableau (ce qui se produit avec For each ...) c'est normal :

Par exemple si les lignes 6 et 7 sont à supprimer, je supprime la ligne 6 : OK; je passe à la ligne 7 ...mais , la ligne 7 initiale est devenue ligne 6, elle ne sera donc pas supprimée ...

Il faut donc commencer par la fin par exemple :

For i= Fin To Début Step -1
   If Cells(i , 5).Value > 365 Then Rows( i ).EntireRow.Delete
Next

Attention :

Range("E2:E150" & Range("E" & Rows.Count).End(xlUp).Row)

c'est la plage E2:E15014 ....

Bonne soirée

Rechercher des sujets similaires à "2003 supprimer ligne superieur 365"