Suppression lignes en fonction de la date

Résolu
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
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,
A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci pour ta réponse.

Malheureusement avec ce code, toutes les lignes de ma feuille sont supprimées.
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Ah ben tu peux essayer la mienne alors.
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
a51432 Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   1
 
Cela fonctionne très bien ! Merci beaucoup
0