Si date inférieur à 7 mois alors...
Résolu
dikold
Messages postés
26
Statut
Membre
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
Je voudrais faire une macro qui supprime tous les utilisateurs qui ne sont pas connecté depuis 7 mois, mais mon code me supprime tout à chaque fois :
Merci d'avance de votre aide
Je voudrais faire une macro qui supprime tous les utilisateurs qui ne sont pas connecté depuis 7 mois, mais mon code me supprime tout à chaque fois :
Sub test()
LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Date = 7 - Date
For l = LastRow To 2 Step -1
valCell = Range("D" & l).Value
If Not varcell.Date < Date Then
Rows(l).Delete
End If
Next
End Sub
Merci d'avance de votre aide
A voir également:
- Vba si date supérieur à aujourd'hui
- Pas de signal tv aujourd'hui - Guide
- Problème internet aujourd'hui - Accueil - Outils
- Trouver une date de naissance gratuit - Forum Webmastering
- Panne la poste aujourd'hui - Accueil - Services publics
- Supérieur ou égal clavier - Forum Bureautique
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?