Suppression lignes en fonction de la date

[Résolu/Fermé]
Signaler
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015
-
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015
-
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

Messages postés
16026
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2021
1 548
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
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015

Merci pour ta réponse.

Malheureusement avec ce code, toutes les lignes de ma feuille sont supprimées.
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
Ah ben tu peux essayer la mienne alors.
Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
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+
Messages postés
16026
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2021
1 548
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
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015

Cela fonctionne très bien ! Merci beaucoup