Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

condition sur date

13 réponses
Avatar
Alex
Bonjour =E0 tous,=20

je rencontre une difficult=E9 pour ecrire en VBA une condition avec des con=
troles de dates, et m'en explique :=20

Dans un tableau, j'ai en colonne D une colonne "date du dernier controle".=
=20

Le prochain controle doit avoir lieu 2 ans apr=E8s cette date.

Ma condition doit effectuer une mise en forme : Fond de la cellule de la co=
lonne "date du dernier controle" en orange lorsque l'on est =E0 12 mois (36=
5jours) de la date du futur controle par rapport =E0 la date du jour, et en=
rouge si l'on est =E0 180 jours de la date du futur contole toujours par r=
apport =E0 la date du jour.=20

Je me torture la t=EAte, mais n'arrive pas =E0 obtenir le r=E9sultat esp=E9=
r=E9. Quelqu'un aurait-il la solution =E0 ce probl=E8me.

Par avance merci de votre aide.
Bien cordialement.
Alex

10 réponses

1 2
Avatar
Jacquouille
Bonjour
MEFC : sélectionner toute ta colonne.
Menu / Format / MEFC / La valeur de la cellule est : /
=aujourdhui()-365 -----> format, mise en forme orange
=aujourdhui()-180 ----> rouge.

Les puristes pourraient écrire =année(aujourdhui()-1 ---> orange ----> ce
qui est plus juste car si on se retrouve dans une bisextile, il y aura
changement de date avec aujourdhui()-365.
Pour l'autre =mois(aujourdhui()-6 ---> rouge

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Alex" a écrit dans le message de groupe de discussion :


Bonjour à tous,

je rencontre une difficulté pour ecrire en VBA une condition avec des
controles de dates, et m'en explique :

Dans un tableau, j'ai en colonne D une colonne "date du dernier controle".

Le prochain controle doit avoir lieu 2 ans après cette date.

Ma condition doit effectuer une mise en forme : Fond de la cellule de la
colonne "date du dernier controle" en orange lorsque l'on est à 12 mois
(365jours) de la date du futur controle par rapport à la date du jour, et en
rouge si l'on est à 180 jours de la date du futur contole toujours par
rapport à la date du jour.

Je me torture la tête, mais n'arrive pas à obtenir le résultat espéré.
Quelqu'un aurait-il la solution à ce problème.

Par avance merci de votre aide.
Bien cordialement.
Alex


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
MichD
Bonjour,

Tu as essayé cette formule pour établir ta mise en forme conditionnelle?

D1 est la première cellule des données "date" en colonne D
Tu sélectionnes toute la plage de données, tu appelles la commande "mise en forme conditionnelle" et tu utilises cette
formule :
=AUJOURDHUI()>DATE(ANNEE($D1)+2;MOIS($D1);JOUR($D1))
Le +2 de la formule signifie 2 ans.
La mise en forme s'appliquera dès que la durée dépassera 2 ans.

Pourquoi utiliser VBA pour faire cela? L'enregistreur de code devrait te donnait l'essentiel du code.

Si tu as un problème, publie ce que l'enregistreur de code t'a donné comme code!
Avatar
Alex
Bonjour à vous deux,

merci pour ce retour.
Je n'avais pas pensé à la mise en forme conditionnelle, mais si cela pe ut se faire sans vba ce n'est pas plus mal.
Après lecture, j'ai repris la formule proposé par Michel que j'ai modif ié ainsi :

=AUJOURDHUI()-365>DATE(ANNEE($D1)+2;MOIS($D1);JOUR($D1)alors rouge
=AUJOURDHUI()-180>DATE(ANNEE($D1)+2;MOIS($D1);JOUR($D1))alors orange

Cela vous semble t il correcte ?
Merci pour votre aide
Alex
Avatar
MichD
Pour la mise en forme conditionnelle, pourquoi ne pas essayer d'exprimer clairement ce que tu veux.

On sait qu'en colonne D, tu as des dates.

Exemple : Par rapport à la date en D1, Quand veux-tu que la cellule passe à l'orange?
'' '' '' , Quand veux-tu que la cellule passe au rouge?


Ce type de formule : =AUJOURDHUI()>DATE(ANNEE($D1)+2;MOIS($D1);JOUR($D1))
permet d'ajouter ou de soustraire à chaque paramètre de la fonction DATE(), une durée
quelconque.

Dans la formule, j'ajoute (+2) 2 ans, mais je pourrais appliquer ce même principe pour ajouter
6 mois au paramètre Mois() de la fonction Date() ou 25 jours au paramètre Jour() de la
fonction "DATE()". Au lieu d'ajouter, tu peux soustraire aussi des années, des mois, ou des jours.
C'est toi qui décides ce que tu veux, la comparaison à faire.

La mise en forme conditionnelle affiche le format de cellule choisi au moment où la formule devient VRAI.
Avatar
Alex
J'ai du mal m'exprimé, avec mes excuses.

Je réexplique mon besoin et donne des exemples.

En colonne D figure les dates du derniers contrôle. Le nouveau contrôle doit s'effectuer deux ans après (730j).
Ma mise en forme en orange doit se mettre 365j (1 an) après la date du de rnier contrôle et en rouge 547 jours (1an et demi) après la date du der nier contrôle

Date Dernier contrôle ! date à laquelle la mise en forme s'applique + Couleur

01/01/2012 => 01/01/2013 en orange => O1/07/2013 en roug e
01/06/2012 => 01/06/2013 en orange => 01/11/2013 en roug e
01/12/2013 => 01/12/2014 en orange => 01/06/2015 en roug e
01/02/2014 => 01/02/2015 en orange => 01/08/2015 en roug e

Pas de mise en Forme si avant la date orange

j'espère que cette explication avec exemple sera plus claire pour m'appor ter votre aide.

Merci encore de votre aide.
Avatar
Alex
J'ai mis un fichier sur cijoint :

http://cjoint.com/?3GkuxFaIWmU

La colonne A est la colonne D dans mon vrai fichier, j'ai moi même mis la mise en forme que je souhaite. Les colonnes B, C, D et E sont la pour tent er de mieux expliquer mon besoin par rapport au date.

Encore merci
Avatar
Alex
Ah je crois que j'ai réussi (fait sur la colonne A de mon fichier joint) :

ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1))<AUJOURDHUI() en orange
ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1)+182)<AUJOURDHUI() en rouge

Merci
Avatar
Fredo P.
http://cjoint.com/?0GlnYauaVny
MFC:
=ET(A2<>"";(A2+365)<AUJOURDHUI();(A2+547)>AUJOURDHUI()) ' Pour l'
Orange
=ET(A2<>"";(A2+547)<AUJOURDHUI()) ' pour le Rouge

"Alex" a écrit dans le message de news:

Ah je crois que j'ai réussi (fait sur la colonne A de mon fichier joint) :

ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1))<AUJOURDHUI() en orange
ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1)+182)<AUJOURDHUI() en rouge

Merci
Avatar
Alex
Merci fredo pour ce retour.
Avatar
Jacquouille
Bonjour,

Sans rien enlever au mérite de ces formules (j'ai proposé la MEFC hier),
j'attire une seconde fois l'attention que, en prenant une date et en y
ajoutant 365 ou 547 jours, cela changera la date lors des calculs sur les
années bissextiles ( 1 j en +).
Pour contourner ce problème, il suffit de décortiquer la date en année (+1),
mois, jours.
Bonne fin de journée
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"Fredo P." a écrit dans le message de groupe de discussion :
lpoj6m$h2a$

http://cjoint.com/?0GlnYauaVny
MFC:
=ET(A2<>"";(A2+365)<AUJOURDHUI();(A2+547)>AUJOURDHUI()) ' Pour l'
Orange
=ET(A2<>"";(A2+547)<AUJOURDHUI()) ' pour le Rouge

"Alex" a écrit dans le message de news:

Ah je crois que j'ai réussi (fait sur la colonne A de mon fichier joint) :

ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1))<AUJOURDHUI() en orange
ÚTE(ANNEE($A1)+1;MOIS($A1);JOUR($A1)+182)<AUJOURDHUI() en rouge

Merci


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
1 2