date depasser de 1 mois

Mitch

XLDnaute Occasionnel
Bonjour j'ai cette macro qui m'efface la ligne quand une date dans la colonne C et dépasser mais j'aurais voulu quelle s'efface que 1 mois après

Application.ScreenUpdating = False 'accélère l'éxecution et évite le scintillement de l'écran
Dim C As Date, i As Integer, imax As Integer 'déclarations
With Sheets("chantier posé")
imax = .Cells(Rows.Count, 4).End(xlUp).Row 'numéro de la dernière ligne saisie
For i = imax To 2 Step -1 'boucle en partant du bas
C = CDate(.Cells(i, 3)) 'date de la ligne en cours
If C < Now Then .Rows(i).EntireRow.Delete 'suppression de la ligne complète
Next i
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : date depasser de 1 mois

Bonjour Mitch, bonjour le forum,

Un mois pile c'est compliqué car les mois n'ont pas le même nombre de jours... Si une solution avec 30 jours (ou 31 jours) te convient il suffit de remplacer la ligne :
Code:
If C < Now Then .Rows(i).EntireRow.Delete 'suppression de la ligne complète
par
Code:
If C + 30 < Now Then .Rows(i).EntireRow.Delete 'suppression de la ligne complète
 

Gorfael

XLDnaute Barbatruc
Re : date depasser de 1 mois

Salut Mitch et le forum
Si j'ai bien compris ton charabia, tu voudrais que quand la date en C est dépassée de plus d'un mois, on l'efface.

Quelques remarques : écrire en phonétique n'est pas le meilleur moyen de supprimer les erreurs d'interprétation que peuvent faire les dépanneurs.

Un extrait de code ne permet pas de le comprendre obligatoirement. Déjà avec toute la macro, sans explication de ce qu'elle doit faire, ce n'est pas facile... alors avec juste un lambeau...
Code:
Application.ScreenUpdating = False 'accélère l'éxecution et évite le scintillement de l'écran

Dim C As Date, L As Long, Lmax As Long 'déclarations

With Sheets("chantier posé")
    Lmax = .Cells(Rows.Count, "D").End(xlUp).Row 'numéro de la dernière ligne saisie
    For L = Lmax To 2 Step -1 'boucle en partant du bas
        C = CDate(.Cells(L, "C")) 'date de la ligne en cours
        C = DateSerial(Year(C), Month(C) + 1, Day(C))
        If C < date Then .Rows(L).Delete 'suppression de la ligne complète
    Next L
Lambeau non testé
A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : date depasser de 1 mois

Bonjour le fil, bonjour le forum,

Merci Gorfael d'avoir complété ma réponse avec une solution intéressante que je vais tenter de retenir...
Par contre je n'ai pas compris tes remarques envers Mitch. Son explication me parraissait claire (malgré le et dépasser à la place de est dépassée...) et l'extrait de son code suffisant pour pouvoir lui répondre...
 

Discussions similaires

Réponses
17
Affichages
808

Statistiques des forums

Discussions
312 111
Messages
2 085 399
Membres
102 882
dernier inscrit
Sultan94