Suppression lignes en fonction de la date

Résolu
a51432 Messages postés 39 Statut Membre -  
a51432 Messages postés 39 Statut Membre -
Bonjour,

Je dispose d'un classeur excel dans lequel j'aimerai supprimer toutes les lignes qui ne concernent pas la semaine passée. La date est contenue dans la cellule "I" de chaque ligne et je souhaite garder uniquement les lignes à date J-7 à J-3. Le format de la date dans les cellule est yyyymmdd et le format est standard.

J'ai écrit le code ci-dessous :

Sub test()

Application.ScreenUpdating = False

Dim derLig, i As Long
Dim dLun, dMar, dMer, dJeu, dVen

dLun = Format(Now() - 7, "yyyymmdd")
dMar = Format(Now() - 6, "yyyymmdd")
dMer = Format(Now() - 5, "yyyymmdd")
dJeu = Format(Now() - 4, "yyyymmdd")
dVen = Format(Now() - 3, "yyyymmdd")

With Workbooks("Classeur").Sheets("Feuil1")
derLig = .Range("A" & .Rows.Count).End(xlUp).Row
For i = derLig To 2 Step -1
If .Cells(i, 9) <> dLun And .Cells(i, 9) <> dMer And .Cells(i, 9) <> dMar And .Cells(i, 9) <> dJeu And .Cells(i, 9) <> dVen Then
.Cells(i, 9).EntireRow.Delete
End If
Next i
End With

Application.ScreenUpdating = True

End Sub


Le problème c'est qu'il ne garde que la date du dernier vendredi (J-3, variable : dVen).

Merci pour votre aide !

Cordialement,

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sub test()
    
    Application.ScreenUpdating = False
    
    Dim derLig, i As Long
    Dim dLun, dVen
    
    dLun = Now() - 7
    dVen = Now() - 3
    
    With Workbooks("Classeur1").Sheets("Feuil1")
        derLig = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = derLig To 2 Step -1
            If .Cells(i, 9) < dLun Or .Cells(i, 9) > dVen Then
                .Cells(i, 9).EntireRow.Delete
            End If
        Next i
    End With
    
    Application.ScreenUpdating = True
    
    End Sub
    0
    1. a51432 Messages postés 39 Statut Membre 1
       
      Merci pour ta réponse.

      Malheureusement avec ce code, toutes les lignes de ma feuille sont supprimées.
      0
    2. Zoul67 Messages postés 2001 Statut Membre 149
       
      Ah ben tu peux essayer la mienne alors.
      0
  2. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    La réponse de f89... est plus propre.
    Si tu mets des espions, tu verras que les deux opérandes (avec les inégalités) sont de types différents (resp. Double et String), d'où une suppression de ligne un peu trop massive
    => CStr(...)<>CStr(...) marche aussi.

    A+
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Tout le probleme vient que nous ne savons pas si les cellules de la colonne I (9) sont en chaines de caracteres ou pas
      0
    2. a51432 Messages postés 39 Statut Membre 1
       
      Cela fonctionne très bien ! Merci beaucoup
      0