Suppression lignes contenant un mois ayant pour date le mois précédent

Bonjour à tous,

Je tourne un peu en rond car je suis limité en VBA donc j'ai opté pour la demande d'aide de personnes confirmées.

Voici ce que j'essaie de faire dans ma macro :

Je traite un fichier excel avec en colonne B et à partir de la ligne 2 une suite de lignes avec des dates du style 12/08/2017, 12/09/2020...etc j'aimerai coller en amont de ma macro actuelle une suppression des lignes ayant pour date le mois et l'année précédents à celle du jour.

Je vous remercie d'avance.

Sub MyDeleteRows()

Dim lastrow As Long
Dim y As Long

Sheets("Sheet1").Select
With Sheets("Sheet1")
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
For i = lastrow To 2 Step -1
If (Cells(i, 2).Value2 < Date) And _
((Month(Cells(i, 2)) < Month(Date)) Or _
(Year(Cells(i, 2)) < Year(Date))) _
Then Rows(i).EntireRow.Delete
Next i
End With

End Sub

19dyncc2b-tmp.xlsx (10.50 Ko)

Bonjour,

Pourquoi Value2 ?

Ajoute CDate

edit : correction voir plus bas

Bonjour Steelson ,

Merci pour votre réponse

En faite j'ai mis value2, parce que je considère la colonne B = colonne 2;

Le code n'a pas marché pour moi

Le code n'a pas marché pour moi

Désolé, erreur de parenthèse

Sub MyDeleteRows()

Dim lastrow As Long
Dim i As Long

    Sheets("Sheet1").Select
    With Sheets("Sheet1")
        lastrow = Cells(Rows.Count, 2).End(xlUp).Row
        For i = lastrow To 2 Step -1
            If CDate(Cells(i, 2).Value) <= WorksheetFunction.EoMonth(Date, -1) Then Rows(i).EntireRow.Delete
        Next i
    End With

End Sub

Merci beaucoup Steelson,

Ca marche parfaitement maintenant, c'est super sympa;

J'ai une autre demande si c'est possible svp, j'ai besoin de supprimer les dates supérieures au mois actuel+1 , par exemple on est le 07/10 je veux supprimer les lignes avec les dates supérieures à novembre ( par exemple 01/12/2020 ....etc )

Merci d'avance

Tu devrais y arriver ... essaie ceci :

If CDate(Cells(i, 2).Value) > WorksheetFunction.EoMonth(Date,1) Then Rows(i).EntireRow.Delete

J'ai essayé avec ce code, ca ne marche pas , ca m'affiche un message "incompatibilité de type"

13dyncc2b-tmp.xlsm (14.27 Ko)

Ben non, ça fonctionne !

Sub MyDeleteRows()

Dim lastrow As Long
Dim i As Long

    Sheets("Sheet1").Select
    With Sheets("Sheet1")
        lastrow = Cells(Rows.Count, 2).End(xlUp).Row
        For i = lastrow To 2 Step -1
            If CDate(Cells(i, 2).Value) <= WorksheetFunction.EoMonth(Date, -1) Then Rows(i).EntireRow.Delete
            If CDate(Cells(i, 2).Value) > WorksheetFunction.EoMonth(Date, 1) Then Rows(i).EntireRow.Delete
        Next i
    End With

End Sub

Regarde s'il y a une date manquante

Parfait, ça fonctionne maintenant,

Merci pour votre aide, c'est super gentil

Pourtant c'est le même code ! Qu'est-ce qui n'a pas fonctionné ?

Je ne sais pas, quand je l'ai saisi et exécuté, il m'a affiché le msg.

Etant débutant en VBA, j'arrive pas à savoir pourquoi il a pas marché dès le premier coup.

Rechercher des sujets similaires à "suppression lignes contenant mois ayant date precedent"