Problème pour ajouter des jours dans une boucle

Fermé
randall Messages postés 422 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 26 février 2024 - 29 avril 2019 à 17:22
 randall - 30 avril 2019 à 17:57
Bonjour,

Sur des dates d'échéances sur une plage de cellules C1 à C6 je veux savoir si la date est inférieure de 20 jours par rapport à la date d'aujourd'hui afin colorer une cellule en rouge par exemple pour déclencher un avertissement.
Sur les 3 procédures ci-dessous seule la première fonctionne les 2 autres me donnent une date de 19/01/1900 à date2 avec les 2 formules qui ajoutent 20 jours et donc le résultat est faux . Pourquoi?ces 2 formules avec madate2 = madate2+ 20 et Date Add semblent correctes pourtant.exemples trouvés sur internet.

Merci pour la réponse

Sub echéance2()( procédure qui fonctionne)
Dim cel As range, madate2 As Date, aujourdhui As Long
aujourdhui = Date
For Each cel In range("C1:C6")
madate2 = cel.Value + 20
If madate2 < aujourdhui Then
cel.Interior.ColorIndex = 3
Else
cel.Interior.ColorIndex = xlNone
End If
Next cel
End Sub

Sub échéance4()
'essai pour ajouter 20 jours

Dim cel As range, madate2 As Date, aujourdhui As Long
aujourdhui = Date
For Each cel In range("C1:C6")
madate2 = madate2 + 20 (madate2 me donne 19/01/1900 en pas à pas au lieu de 17/04/2019)
If madate2 < aujourdhui Then
cel.Interior.ColorIndex = 3
Else
cel.Interior.ColorIndex = xlNone
End If
Next cel
End Sub

Sub echeance5()
'essai pour ajouter 20 jours

Dim cel As range, madate2 As Date, aujourdhui As Long
aujourdhui = Date
For Each cel In range("C1:C6")
madate2 = DateAdd("d", 20, (madate2) me donne 19/01/1900 en pas à pas au lieu de 17/04/2019)
If madate2 < aujourdhui Then
cel.Interior.ColorIndex = 3
Else
cel.Interior.ColorIndex = xlNone
End If
Next cel
End Sub

Configuration: Windows / Chrome 73.0.3683.103
A voir également:

2 réponses

jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
29 avril 2019 à 17:54
Bonjour,
Déjà.... comme expliqué dans ta précédente question....
.. 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

N'est-ce pas assez clair ???

Donc je le répète encore une fois pour être sûr que tu le prennes bien en compte...

pour poster ton code, tu dois utiliser les BALISES DE CODE !

Merci.


Ensuite...


les 2 autres me donnent une date de 19/01/1900

Normal... vu que la variable madate2 est initialisée nul-part....
Et donc.. par défaut, la date est 19/01/1900

Tu dois donc, dans tes boucles, remplacer
madate2 = DateAdd("d", 20, (madate2)

par
madate2 = cel.Value + 20

ou par
madate2 = DateAdd("d", 20, cel.Value)


0
jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
29 avril 2019 à 17:55
Au passage, j'ai placé ta précédente question (https://forums.commentcamarche.net/forum/affich-35995325-comparaison-de-date-en-vba) en RESOLUE vu que tu as ouvert celle la....
Ici.. on ne doit pas ouvrir de DOUBLONS.

Merci de respecter la charte du forum que tu as accepté en t'inscrivant !
0
Merci pour la réponse ,mes excuses pour les balises de code je n'avais pas compris au départ de quoi il s'agissait. Si j'ai bien compris il faut cliquer sur la liste déroulante et indiquer en quel code est écrit la procédure.
Cordialement
0