La macro qui efface une plage selon un critère

Salut la communauté

Comme le titre l'indique, j'ai un peu (plutôt beaucoup) de mal à saisir une macro qui effacerait les données d'une plage de tableau quand un de ces critères (une date)

est dépassé. Je joins un fichier pour que ce soit plus clair :

https://www.excel-pratique.com/~files/doc/Chercher_la_macro.xls

Merci aux connaisseurs

Bonjour,

Le critère de date est sur la colonne D ou la colonne E ?

A te lire

Dan

Bonjour,

Le critère en question est la date de fin donc colonne E.

Merci

Bonjour,

Utilise la macro ci-dessous à placer dans un module en VBA :

Sub supprime()
Dim a As Integer
Dim i As Long
For i = Range("E65536").End(xlUp).Row To 2 Step -1
a = VBA.Year(Cells(i, 5).Value)
If a < Range("h2") Then
Range(Cells(i, 1), Cells(i, 6)).Delete Shift:=xlUp
End If
Next i
End Sub

Il te suffit de lui associer un bouton ou un raccourci clavier.

Amicalement

Dan

Bonjour à nouveau

Merci pour le tuyau !

Cette macro efface bien les plages désirées, mais elle efface aussi la mise en forme...J'ai donc remplacé le Delete Shift:=xlUp par ClearContents et , la mise en forme reste, les plages sont effacées, mais ceci laisse des trous dans mon tableau... Alors, QUESTION : comment effacer les dites plages, remonter les données restantes, sans effacer la mise en forme ( le beurre et l'argent du beurre,en fait...Pour la crémière, ce sera pour ma prochaine question...)

Finalement, après réflexion,j'ai ajouté un tri à la macro initiale et ça marche !

Sub supprime() 
Dim a As Integer 
Dim i As Long 
For i = Range("E65536").End(xlUp).Row To 2 Step -1 
a = VBA.Year(Cells(i, 5).Value) 
If a < Range("h2") Then 
Range(Cells(i, 1), Cells(i, 6)).Delete Shift:=xlUp 
End If 
Next i 

Range("A1:F18").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Peut-être y a t il plus simple ??

En tout cas merci pour la premiere macro

Gelonleup

Re,

Remplace ma macro par celle-ci

Sub supprime()
Dim a As Integer
Dim i As Long
For i = Range("E65536").End(xlUp).Row To 2 Step -1
c = Cells(i, 5).Value
a = VBA.Year(c)
If a < Range("h2") Then
Range(Cells(i, 1), Cells(i, 6)).Delete Shift:=xlUp
Range("E65536").End(xlUp)(2).EntireRow.Insert
End If
Next i
End Sub

Amicalement

Dan

Salut à tous et toutes,

Merci pour la macro, elle fonctionne sur le fichier d'exemple. J'ai tenté de l'adapter à mon classeur réel, et là elle opère hyper lentement pour finalement planter avec un msg d'erreur . Je pense que la lenteur est due à l'ajout de mises en formes conditionnelles dans le tableau, et le plantage au fait que le tableau, à cause de l'ajout de boutons de tri au dessus des colonnes,contient les données à partir de la ligne 4 et non plus 3... Désolé pour ce contre temps, j'aurais dû poster le fichier avec les mêmes détails que ceux de mon classeur... C'est chose faite avec le lien ci dessous, si vous souhaitez le consulter...

A bientôt... Pour de nouvelles écritures

https://www.excel-pratique.com/~files/doc/KLHFHChercher_la_macro.xls

Rechercher des sujets similaires à "macro qui efface plage critere"