VBA supprime ligne si date<aujourd'hui [Résolu/Fermé]

Signaler
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Bonjour,

Pourriez-vous m'aider à écrire une macro qui supprimerait une/des ligne(s) si la date en colonne D est inférieur à aujourd'hui?

(chaque ligne aura une date en colonne D)

Merci d'avance pour votre aide précieuse.

3 réponses

Messages postés
24141
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 juillet 2021
6 847
Bonjour,

Sub suppLig() 
    Dim lig As Long 
    For lig = [D65536].End(xlUp).Row To 1 Step -1 
        If IsDate(Cells(lig, 4)) And Cells(lig, 4) < Date Then Rows(lig).Delete 
    Next lig 
End Sub


eric

PS : quand tu supprimes une ligne toujours boucler en partant du bas sinon chaque ligne suivant une ligne supprimée n'est pas testée.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
239
Bonjour,

Merci beaucoup eriiic
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
239
Je n'avais pas précisé qu'il pourrait y avoir des lignes vides et la seule façon que j'ai trouvé pour éviter de bloquer sur une ligne vide est d'appeler plusieurs fois d'affilé la macro "Test" . C'est de la grosse bidouille , mais ça fonctionne. (je suis preneur d'une solution plus élégante)

Sub Test()
For i = 1 To 100
If Range("A" & i).Value < Now And Range("A" & i).Value <> "" Then
Rows(i).Delete
Else
End If
Next i


End Sub

Private Sub CommandButton1_Click()
Test
Test
Test
Test
End Sub

Merci pour ton aide
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
2
salut,

le code ci-dessous devrait marcher (à adapter à ton cas particulier) :

Dim la_date As Date
la_date = Sheets(1).Range("A1").Value

If la_date < Now Then
Sheets(1).Range("A2").Value = 1
End If
Messages postés
61
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
26 octobre 2018
2
pour supprimer :

Sheets(1).Rows(2).Delete