Si date inférieur à 7 mois alors...
Résolu
dikold
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- Vba si date supérieur à aujourd'hui
- Pas de signal tv aujourd'hui - Guide
- Publipostage date inversée ✓ - Forum Word
- Panne la poste aujourd'hui - Accueil - Services publics
- Combien y a-t-il de bateaux dans la zone de 475 pixels de large et 1000 pixels de haut à partir du coin supérieur gauche de cette image ? - Forum Photoshop
- Signe supérieur clavier - Forum Clavier
2 réponses
Bonjour,
Juste par curiosité, lance ces 3 tests :
Juste par curiosité, lance ces 3 tests :
Sub test() Date = 7 - Date End Sub Sub test2() maDate = 7 - Date MsgBox Date & " " & maDate End Sub Sub test3() maDate = DateSerial(Year(Range("D3").Value), Month(Range("D3").Value) - 7, Day(Range("D3").Value)) MsgBox Range("D3").Value & " " & maDate End Sub
Bon.
Tu sais faire ta boucle c'est déjà pas mal.
On la garde donc.
Maintenant, la même en déclarant les variables :
Tu suis?
Maintenant, on veut connaitre la date d'aujourd'hui - 7 mois.
Que l'on intègre à notre macro :
Ne reste plus qu'à comparer valCell et maDate. Si valCell < maDate => on supprime la ligne...
Donc, le test If :
Que l'on intègre dans la boucle ainsi :
Tu sais faire ta boucle c'est déjà pas mal.
On la garde donc.
Sub test3() LastRow = Cells(Rows.Count, "D").End(xlUp).Row For l = LastRow To 2 Step -1 valCell = Range("D" & l).Value Next End Sub
Maintenant, la même en déclarant les variables :
Sub test3() Dim LastRow As Long, l As Long, valCell As Date LastRow = Cells(Rows.Count, "D").End(xlUp).Row For l = LastRow To 2 Step -1 valCell = Range("D" & l).Value Next End Sub
Tu suis?
Maintenant, on veut connaitre la date d'aujourd'hui - 7 mois.
'Date = aujourd'hui maDate = DateSerial(Year(Date), Month(Date) - 7, Day(Date))
Que l'on intègre à notre macro :
Sub test3() Dim LastRow As Long, l As Long, valCell As Date, maDate As Date LastRow = Cells(Rows.Count, "D").End(xlUp).Row maDate = DateSerial(Year(Date), Month(Date) - 7, Day(Date)) For l = LastRow To 2 Step -1 valCell = Range("D" & l).Value Next End Sub
Ne reste plus qu'à comparer valCell et maDate. Si valCell < maDate => on supprime la ligne...
Donc, le test If :
If maDate <= valCell Then Rows(l).Delete End If
Que l'on intègre dans la boucle ainsi :
Sub test3() Dim LastRow As Long, l As Long, valCell As Date, maDate As Date LastRow = Cells(Rows.Count, "D").End(xlUp).Row maDate = DateSerial(Year(Date), Month(Date) - 7, Day(Date)) For l = LastRow To 2 Step -1 valCell = Range("D" & l).Value If maDate <= valCell Then Rows(l).Delete End If Next End Sub
C'est peut être parce qu'à la ligne l en question, la colonne D ne contient pas une date, mais est vide.
Est ce possible?
Si oui, il faut ajouter un test :
Si Range("D" & l).Value est une date
Est ce possible?
Si oui, il faut ajouter un test :
Si Range("D" & l).Value est une date
Sub test3() Dim LastRow As Long, l As Long, valCell As Date, maDate As Date LastRow = Cells(Rows.Count, "D").End(xlUp).Row maDate = DateSerial(Year(Date), Month(Date) - 7, Day(Date)) For l = LastRow To 2 Step -1 If IsDate(Range("D" & l).Value) Then valCell = Range("D" & l).Value If maDate <= valCell Then Rows(l).Delete End If end If Next End Sub
test2 --> il affiche "25/05/2015 12/07/1784"
test3 --> il affiche "23/03/07 23/08/2006"
Tu n'entrevois pas, via ces exemples, un début de prémisse de solution à ton problème?