Je souhaite écrire une macro qui supprime toutes les lignes contenant une date supérieure à X jours pour une colonne

J'ai une feuille Excel qui comporte N lignes et M Colonnes dont l'une des colonnes possède des valeurs Date. En fonction de la valeur de cette colonne, je voudrais supprimer toutes les lignes dont la date est supérieure à X jours.

Puis-je get de l'aide? Merci d'avance!

Il existe deux façons de le faire:

  1. Utilisation de la formule. Il suffit de soustraire les 2 dates (exemple de capture d'écran ci-dessous), puis filterr la colonne «différence» en fonction de vos besoins et supprimer datatables indésirables. Différence de date à l'aide de la formule Excel

    . 2.autre est d'utiliser VBA qui sera beaucoup plus dynamic.

    Sub Delete_Rows_based_on_Date() Dim iRow As Integer, iCol As Integer, iNum As Integer Dim iLoopR As Integer, iLoopC As Integer 'Benchmark Days iNum = 7 iRow = Range("A1:A" & Rows.Count).End(xlUp).Row iCol = Cells(1, Columns.Count).End(xlToLeft).Column For iLoopR = 1 To iRow 'Assuming data starts from Row #1 For iLoopC = 1 To iCol 'Assuming data starts from Col #1 (A) If IsDate(Cells(iLoopR, iLoopC)) Then ' Check if the cells contains a Date Value If DateDiff("d", Now(), Cells(iLoopR, iLoopC)) > iNum Then Cells(iLoopR, iLoopC).EntireRow.Delete End If End If Next iLoopC Next iLoopR End Sub 
 sub deldat() dim ws as worksheet dim lrow as variant dim lcol as variant dim dt as variant dim n as variant n=7 'assuming 7days to delete records set ws=thisworkbook.sheets(1) lrow=ws.range("A1:A" & rows.count).end(xlup).row 'Getting Last Row lcol=ws.Cells(1, .Columns.Count).End(xlToLeft).Column 'Getting Last column set dt=date() 'getting current date for i=1 to lrow cell=ws.cells(i,1) 'Assuming date values in column 1 Or A if datediff("d",dt,cell.value) > n then ws.row(i).entirerow.delete end if next i end sub 

Je ne suis pas sûr du code. Je ne l'ai pas testé. Essayez le code et récupérez les lacunes ou les erreurs dans ce code