VBA supprime ligne si date<aujourd'hui

Résolu
tchernosplif Messages postés 714 Statut Membre -  
tchernosplif Messages postés 714 Statut Membre -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. tchernosplif Messages postés 714 Statut Membre 249
       
      Bonjour,

      Merci beaucoup eriiic
      0
  2. tchernosplif Messages postés 714 Statut Membre 249
     
    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
    0
  3. ed555 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    -2
    1. ed555 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
       
      pour supprimer :

      Sheets(1).Rows(2).Delete
      -1