Suppression lignes en fonction de la date

Résolu/Fermé
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 - 24 août 2015 à 14:56
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 - 24 août 2015 à 16:18
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 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
24 août 2015 à 15:40
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 lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 1
24 août 2015 à 16:06
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
24 août 2015 à 16:10
Ah ben tu peux essayer la mienne alors.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
24 août 2015 à 16:00
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 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
24 août 2015 à 16:15
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 lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 1
24 août 2015 à 16:18
Cela fonctionne très bien ! Merci beaucoup
0