Supprimer les lignes avec le filtre automatique - date en variable

Bonsoir à tous,

Après m'être arrachée les cheveux toute la journée je viens vous demander votre aide.

J'ai un fichier de 13 000 lignes environ pour lequel je souhaite supprimer toutes les lignes dont la date en E est supérieure à la date reprise dans une autre feuille.

Ca fonctionne très bien par une boucle, mais c'est très long (et j'ai plusieurs autres manipulations identiques à faire sur d'autres feuilles), j'essaie donc d'y parvenir par un filtre, qui fonctionne très bien sur des données comme des "" ou des "1", mais pas moyen de le faire fonctionner sur mes dates. J'ai tenté beaucoup d'approches, notamment de modifications de formats mais sans succès.

Voici le code et le fichier (comme il est à la source, sans mes essais de modifs de formats) avec juste quelques lignes.

Le but de la manœuvre est donc de ne plus avoir que mes deux lignes d'aout et plus celles d'octobre.

Un grand merci à ceux qui voudront bien me venir en aide.

Bonne soirée

Lorence

Sub test()

Dim LastRw As Long
Dim dateLimite As Date

dateLimite = Sheets("AM et barème").Range("H1").Value

LastRw = Sheets("corrections").Cells(Rows.Count, 1).End(xlUp).Row

Sheets("corrections").AutoFilterMode = False
Sheets("corrections").Range("E1:E" & LastRw).AutoFilter Field:=1, Criteria1:=">" & dateLimite
    On Error Resume Next
Sheets("corrections").Range("E2:E" & LastRw).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    On Error GoTo 0
Sheets("corrections").AutoFilterMode = False

End Sub
14classeur1.xlsm (17.68 Ko)

Bonjour

  1. Déjà utilise un tableau structuré (il existe depuis 20 ans dans Excel, pas par hasard...)
  2. ta colonne E contient des textes et non des dates
  3. la date en H1 (selon ton code) n'existe pas dans ton tableau donc rien à supprimer...

Une fois ceci réglé : tableau à traiter mis sous forme de tableau structuré nommé Donnees, Colonne E convertie en dates, date en H1 adaptée

le code suivant fait le job

Sub menage()

Dim dateLimite As Date

Application.ScreenUpdating = False

dateLimite = Sheets("AM et barème").Range("H1").Value

With [Donnees].ListObject
    Crit = ">" & Format(dateLimite, "mm/dd/yyyy")
    .Range.AutoFilter Field:=5, Criteria1:=Crit, Operator:=xlAnd
    .DataBodyRange.Rows.EntireRow.Delete
        ActiveSheet.ShowAllData
    .Range.AutoFilter
End With

Bonjour

Bonjour à tous

Une variante

12classeur1-v1.xlsm (20.56 Ko)

Bye !

Rechercher des sujets similaires à "supprimer lignes filtre automatique date variable"