Comparaison de date en vba
Résolu
randall
Messages postés
528
Statut
Membre
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
Pour des rappels de vaccin sur du bétail je veux surligner en rouge des dates qui arrivent dix jours avant l'échéance. les dates de vaccination sont en C2 : C6 et la date en F2 est celle du jour.
Peut on la nommer aujourd'hui dans le code (celle en F2)?
Seconde question la macro fonctionne jusqu'à la ligne avec then là on me dit erreur d'éxécution 424 objet requis ,j'ai fait plusieurs scénarios sans succès . Quelle est l’erreur pour désigner les cellules C2: C6 qui doivent passer en rouge.
Merci pour la réponse.
Pour des rappels de vaccin sur du bétail je veux surligner en rouge des dates qui arrivent dix jours avant l'échéance. les dates de vaccination sont en C2 : C6 et la date en F2 est celle du jour.
Peut on la nommer aujourd'hui dans le code (celle en F2)?
Seconde question la macro fonctionne jusqu'à la ligne avec then là on me dit erreur d'éxécution 424 objet requis ,j'ai fait plusieurs scénarios sans succès . Quelle est l’erreur pour désigner les cellules C2: C6 qui doivent passer en rouge.
Merci pour la réponse.
Sub vaccin()
Dim cel As range
madate = range("F2")
madate2 = range("C2;C6").cells
madate = DateSerial(Year(madate), Month(madate), Day(madate))
madate2 = DateSerial(Year(madate), Month(madate), Day(madate) + 10)
For Each cel In range("c2;C6").cells
If madate2 > madate Then (après il y a l'erreur)
cells("c2;C6").Value = Interior.ColorIndex = 3
End If
Next cel
End Sub
Configuration: Windows / Chrome 73.0.3683.103
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Vba comparer deux dates
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
- Un ecouteur sur deux marche ✓ - Forum Audio
4 réponses
Bonjour,
quelques erreurs dans ton code
quelques erreurs dans ton code
Sub vaccin()
Dim cel As Range
Dim aujourdhui
Dim madate2
'aujourdhui = (Range("F2").Value)
aujourdhui = CDate(Format(Now(), "d/mm/YY")) ' pas besoin de la cellule F2 pour avoir la date de maintenant...
For Each cel In Range("c2:C6").Cells
madate2 = CDate(DateAdd("d", 10, CDate(cel.Value)))
If madate2 > aujourdhui Then
cel.Interior.ColorIndex = 3
End If
Next cel
End Sub
Bonjour à tous les deux
On peut faire un poil plus simple en lisant les dates comme entiers
Cdlmnt
On peut faire un poil plus simple en lisant les dates comme entiers
Sub vaccin()
Dim cel As Range, madate2 As Long, aujourdhui As Long
aujourdhui = Date
For Each cel In Range("C2:C6")
madate2 = cel.Value + 10
If madate2 > aujourdhui Then
cel.Interior.ColorIndex = 3
Else
cel.Interior.ColorIndex = xlNone
End If
Next cel
End Sub
Cdlmnt
Bonjour Jordane,
Merci pour ta réponse,çà fonctionne bien ,mais j'ai modifié celle de mon crû et j'ai toujours un problème au niveau de la ligne madate2 = madate(DateAdd("d", -10, madate(cel.Value))) qui consiste à enlever dix jours à la date inscrite dans chaque cellule c2 à c6 pour la comparer à la date du jour je ne vois pas le problème je me suis un peu calé sur ton code pourtant.
merci pour le dérangement
Sub vaccin()
Dim cel As range
Dim madate2
madate = range("F3")
madate = DateSerial(Year(madate), Month(madate), Day(madate))
For Each cel In range("c2:C6").cells
madate2 = madate(DateAdd("d", -10, madate(cel.Value)))
If madate2 > madate Then
cel.Interior.ColorIndex = 3
End If
Next cel
End Sub
Merci pour ta réponse,çà fonctionne bien ,mais j'ai modifié celle de mon crû et j'ai toujours un problème au niveau de la ligne madate2 = madate(DateAdd("d", -10, madate(cel.Value))) qui consiste à enlever dix jours à la date inscrite dans chaque cellule c2 à c6 pour la comparer à la date du jour je ne vois pas le problème je me suis un peu calé sur ton code pourtant.
merci pour le dérangement
Sub vaccin()
Dim cel As range
Dim madate2
madate = range("F3")
madate = DateSerial(Year(madate), Month(madate), Day(madate))
For Each cel In range("c2:C6").cells
madate2 = madate(DateAdd("d", -10, madate(cel.Value)))
If madate2 > madate Then
cel.Interior.ColorIndex = 3
End If
Next cel
End Sub
Déjà, pour poster ton code, merci à l'avenir d'utiliser les BALISES DE CODE.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, si tu regardes bien la ligne
que viennent y faire le "madate( " devant le dateAdd et celui devant le cel.value ???
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, si tu regardes bien la ligne
madate2 = madate(DateAdd("d", -10, madate(cel.Value)))
que viennent y faire le "madate( " devant le dateAdd et celui devant le cel.value ???