Si date inférieur à 7 mois alors...
Résolu/Fermé
dikold
Messages postés
22
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
14 novembre 2016
-
Modifié par pijaku le 25/06/2015 à 14:43
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2015 à 16:35
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2015 à 16:35
A voir également:
- Vba si date supérieur à aujourd'hui
- Probleme de reception tnt aujourd'hui 2023 - Guide
- Problème mail orange aujourd'hui 2023 - Guide
- Resultat loto cameroun aujourd'hui ✓ - Forum Excel
- Whatsapp date incorrecte ✓ - Forum Mobile
- Superieur clavier ✓ - Forum Windows 8 / 8.1
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
25 juin 2015 à 14:47
25 juin 2015 à 14:47
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
25 juin 2015 à 15:32
25 juin 2015 à 15:32
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
dikold
Messages postés
22
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
14 novembre 2016
1
25 juin 2015 à 15:48
25 juin 2015 à 15:48
Merci beaucoup pour ton explication, c'est vraiment très clair mais excel me dit qu'il y a une erreur "d'incompatibilité de type" pour la ligne :
valCell = Range("D" & l).Value
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
>
dikold
Messages postés
22
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
14 novembre 2016
25 juin 2015 à 15:53
25 juin 2015 à 15:53
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
dikold
Messages postés
22
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
14 novembre 2016
1
25 juin 2015 à 16:13
25 juin 2015 à 16:13
Merci ça marche, elles sont pas vides mais des fois il est écrit "never" ^^' merci encore pour des explications et le temps que t'a pris :)
ps : j'ai inversé < et > ^^'
ps : j'ai inversé < et > ^^'
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
>
dikold
Messages postés
22
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
14 novembre 2016
25 juin 2015 à 16:35
25 juin 2015 à 16:35
j'ai inversé < et > ^^'
Arff Oui!
Ou avais-je la tête...
De rien en tout cas et A++
Arff Oui!
Ou avais-je la tête...
De rien en tout cas et A++
25 juin 2015 à 15:00
test2 --> il affiche "25/05/2015 12/07/1784"
test3 --> il affiche "23/03/07 23/08/2006"
25 juin 2015 à 15:02
Tu n'entrevois pas, via ces exemples, un début de prémisse de solution à ton problème?
25 juin 2015 à 15:25