Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Rechercher date - (moins) x jours

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hypo78

XLDnaute Impliqué
Bonjour à tous,

je cherche à supprimer les lignes dont la cellule en colonne a est égale à la date -120 jours.

ex : nous sommes le 17 sept 2014, toutes les lignes contenant en colonne a une date inférieure au 21 mai 2014 doivent être supprimées.

Je pensais à çà :

Code:
 Sub ligneerase()
With Application: .ScreenUpdating = False: .Calculation = xlCalculationManual: End With

Sheets("Piquets2").Activate

Dim c As Range
For Each c In Range("A1", [A65000].End(xlUp))
If Now - 120 > c And c.Offset(, 1) <> "" Then Rows(c.Row).Select
Selection.Delete Shift:=xlUp
Next
With Application: .ScreenUpdating = True: .Calculation = xlCalculationAutomatic: End With
End Sub

mais la suppression est aléatoire....

merci pour votre aide
 

Pièces jointes

Dernière édition:
Re : Rechercher date - (moins) x jours

bonjour,

deux soucis:

1)
Code:
If Now - 120 > c And c.Offset(, 1) <> "" Then Rows(c.Row).Select
Selection.Delete Shift:=xlUp

si le test est vrai, on sélectionne la ligne; et quelque soit le résultat du test on supprime la sélection qui n'est pas forcemment issue du test immédiatement précédent

il faudrait
Code:
If Now - 120 > c And c.Offset(, 1) <> "" Then 
  Rows(c.Row).Select
  Selection.Delete Shift:=xlUp
End If
on pourrait aussi supprimer la sélection puis la suppression par une seule instruction:
Rows(c.Row).Delete Shift:=xlUp

et alors écrire (sans End If)
Code:
If Now - 120 > c And c.Offset(, 1) <> "" Then Rows(c.Row).Delete Shift:=xlUp

2)
La boucle For Each commence par le début de la plage (soit A1) cellule après cellule

si le test est vrai pour A1, on supprime la ligne 1 . la valeur de A2 passe alors en ligne 1 et ne sera donc pas traitée et ainsi de suite.

Il faut donc commencé par la fin de la plage par une boucle For ( je ne sais pas si on peut définir le sens de la plage avec for each)

Code:
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
    If Now - 120 > Cells(i, 1) And Cells(i, 1).Offset(, 1) <> "" Then Rows(i).Delete Shift:=xlUp
Next


A+
 
Re : Rechercher date - (moins) x jours

Bonjour, hypo78, Paf, le Forum,

Ou bien comme ceci :

Code:
Option Explicit
Sub Ligne_supprimer_selon_date()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = Cells(Rows.Count, "a").End(xlUp).Row To 1 Step -1
        If Date - 120 >= Range("a" & i) Then Rows(i).Delete
    Next i
    Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : Rechercher date - (moins) x jours

Je viens de tester la solution de DoubleZero qui fonctionne, je n'ai pas encore testé celle de Paf mais tes explications me permettent de progresser.

Petite problématique du même ordre : rechercher la date du jour et si les 10 lignes suivantes ne contiennent pas de date remplir ces cellules de jour en jour. (je cherche aussi de mon côté mais je suis sûr que vous serez plus rapide que moi... 😉)
 
Re : Rechercher date - (moins) x jours

j'ai réussi avec ce code

Code:
 Private Sub chargement()

Dim i As Integer
Dim j As Integer

Sheets("Piquets2").Activate

Do
Cells(i + 1, 1).Activate
If Cells(i + 1, 1) = Date Then
ActiveWindow.ScrollRow = i + 1
Exit Do
End If
i = i + 1
Loop

For j = 1 To 10

ActiveCell.Offset(j, 0) = ActiveCell.Value + j

Next j

End Sub
 
Re : Rechercher date - (moins) x jours

Re,

doublezero en adaptant ton code à mon fichier original, je rencontre un problème tout bête.
ma recherche commence en A2 et non en A1. j'ai contourné le problème en mettant a1 = aujourdhui() mais bon si je pouvais l'intégrer au code 😉

merci d'avance

edit: je pense avoir trouvé

Code:
 For i = Cells(Rows.Count, "a").End(xlUp).Row To 2 Step -1
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
737
L
Réponses
9
Affichages
1 K
O
Réponses
1
Affichages
947
Réponses
16
Affichages
2 K
A
Réponses
17
Affichages
4 K
Abdenour
A
Réponses
8
Affichages
1 K
Réponses
1
Affichages
1 K
L
Réponses
1
Affichages
1 K
Ludwig74
L
Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…