Comparaison de dates

neopaulo

XLDnaute Nouveau
[RESOLU] Comparaison de dates

Bonjour, j'ai un gros souci dans mon tableau pour comparer 3 dates

En D1, l'utilisateur note le début de la période concernée (ex : 01/07/2009)
En F1, l'utilisateur note la fin de la période concernée (ex : 31/08/2009
En CD5, j'ai une date qui provient d'une liaison avec une bdd access (ex : 31/07/2009)

Dans un cellule, j'ai besoin de comparer la date en CD5 avec les bornes inférieures et supérieures saisies manuellement par l'utilisateur dans la feuille excel. L'idée, au delà de la comparaison, est de dire : "si D1<=CD5<=F1 alors 1, sinon 0"

Voilà la formule que j'ai essayé : =SI(ET(CD5>=$D$1;CD5<=$F$1);1;0)
Et bien sur ça ne fonctionne pas sinon je ne serai pas là...

Ce que j'ai pu trouver en farfouillant autour des dates sur le net c'est la formule : =DATE(année;mois;jour)
J'ai essayé de l'utiliser dans mes 3 cellules (D1, F1, CD5), en notant donc également la troisième de manière manuelle, et non plus depuis l'importation directe de ma liaison access/excel.

Lorsque je fais ça dans mes 3 cellules, alors la formule de comparaison notée plus haut fonctionne.
A la rigeur, l'utilisateur peut utiliser la formule "date" en D1 et F1, puisqu'il doit noter à chaque fois la période concernée... mais par contre, le but de la liaison access/excel est justement de ne pas avoir à noter à la main la date en CD5; donc impossible d'utiliser la feinte avec DATE(année;mois;jour) , donc ma première formule ne fonctionne toujours pas.......

Est-ce que quelqu'un aurait une idée ??

merci beaucoup !
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Comparaison de dates

Bonsoir neopaulo, Bienvenue sur XLD,

Je viens d'essayer ta formule, elle fonctionne bien.

Dans la mesure où CD5 provient d'une liaison ACCESS, vérifie si elle est vraiment au format date, le problème doit venir de là.

Tu nous dis et bonne soirée.

Jean-Pierre
 

Jocelyn

XLDnaute Barbatruc
Re : Comparaison de dates

Bonjour le Forum,
Bonjour neopaulo,

Hum hum je pense que tout cela est uniquement du a un problème de format, sans voir un exemple concret pas facile de dire quelle valeur n'est pas une valeur numérique, mais les valeur de D1 et F étant tapée directement par l'utilisateur on peut penser que c'est la valeur de CD5 qui n'est pas numérique

a tester

=SI(ET(CD5*1>=$D$1;CD5*1<=$F$1);1;0)
ou
=SI(ET(DATEVAL(CD5)>=$D$1;DATEVAL(CD5)<=$F$1);1;0)

Pour tester si CD5 est numérique dans une cellule vide tape =ESTNUM(CD5) le résultat sera vrai ou faux tu peux d'ailleur faire ce test pour les 3 cellules

Jocelyn

EDIT : Oup's bonjour jeanpierre:), désolé pour la collision
 

neopaulo

XLDnaute Nouveau
Re : Comparaison de dates

Bonjour, et merci de vous être penchés sur mon problème !

Alors pour résumer : j'ai vérifié dans access, et le champ qui renvoie une valeur de date dans ma cellule CD5 est bien au format date, avec en plus un masque de saisie.
Quand je fais : =ESTNUM(CD5), j'obtiens le résultat FAUX :( Par contre je ne vois pas comment modifier cela puisque je pense avoir fait le nécessaire dans access ?
Pour les cellules D1 et F1, par contre le résultat est bien "VRAI".

Quand j'utilise les deux formules proposées par Jocelyn, les deux fonctionnent... je ne comprends pas pourquoi, mais ça fonctionne... Je ne comprends ce que fait l'astérisque, et je ne connaissais pas la fonction DATEVAL non plus...

Du coup, pour vous, il vaut mieux que j'utilise quelle fonction ??

Par contre, je viens d'essayer à l'instant de modifier "artificiellement" ma date en CD5 (en changeant le mois) pour que ma date soit hors période (j'obtiens en gros CD5<D1<F1); et bà la souci : j'obtiens "#VALEUR!" pour la deuxième formule (celle avec DATEVAL). Et si je modifie à nouveau ma date en CD5 pour qu'elle soit comprise dans les bornes, cette fois ci aucune des deux formules de réactualise le résultat. (en gros je devrais revenir à "1", et je reste sur "0" ou "#ERREUR!").....

Si vous pouvez m'expliquer tout ça, je suis preneur !
 

Jocelyn

XLDnaute Barbatruc
Re : Comparaison de dates

re,

Ce n'est pas parcaque ton format est un format date dans ACCES que la valeur qui arrive dans excel est numérique le *1 dans la première formule multiplie la valeur de CD5 par 1 et la rend numérique.

DateVal() permet de transformer une date en valeur texte en date en valeur numérique.

Concernant le soucis rencontré lors du changement "artificiel" manuel je suppose de mois comment le fais tu réellement car a priori il n'y a pas de raison pour qu'excel renvoi une valeur d'erreur sauf pour la formule DATEVAL() qui ne trouvant pas de date format texte renvoie effectivement #Valeur ensuite même en revenant entre les borne la valeur n'est toujours pas du texte

a tu essayé de voir si tu avais ce soucis avec la formule CD5*1 si oui essai de poster un exemple avant manipulation de quelques ligne sans données confidentielles

Jocelyn
 

neopaulo

XLDnaute Nouveau
Re : Comparaison de dates

En fait je me suis dit que le plus simple serait d'envoyer mon fichier... comme ça au moins, ça sera plus clair !

Mon tableau peut vous paraître "pourri", je m'en excuse, mais je me débrouille comme je peux....

La cellule contenant la formule avec laquelle je bataille est la EA5.
Pour les autres cellules, cela correspond avec ce que j'avais communiqué dans mes messages précédents. Au niveau de la formule, j'ai deux autres conditions qui sont présentes; ne pas hésiter à me demander si besoin d'explications.
Dans la colonne DZ la première formule avec l'astérisque.
Dans la colonne DY la deuxième formule avec DATEVAL.

Pour modifier articiellement la date, j'avais été dans la cellule CD5 et remplacé le "07" par "06" dans la barre de formule (idem pour la CD6).
Le tableau tel qu'il est là sort tout juste d'une réactualisation des données par la liaison access-excel, donc c'est comme si je n'avais touché à aucune valeur. Les valeurs importées sont de la colonne B à la CQ.

Merci beaucoup, beaucoup, de vous pencher sur mon problème..
 

Pièces jointes

  • dates.xls
    48 KB · Affichages: 72
  • dates.xls
    48 KB · Affichages: 70
  • dates.xls
    48 KB · Affichages: 75

Jocelyn

XLDnaute Barbatruc
Re : Comparaison de dates

re,

Je te conseille d'utiliser la première formule celle avec *1 cela fonctionne bien même aprés avoir changé la date mais attention on va créer un renvoi d'erreur si la date aprés changement manuel n'existe pas : dans ton fichier tu as en CD5 la valeur non numérique 31/07/2009 si tu change le mois seulement avec par exemple 6 cela donne 31/06/2009 et c'est une date qui n'existe pas juin = 30 jours je pense que ton soucis vient uniquement de la.

par contre effectivement comme indiqué précédement problème avec la fonction DATEVAL() si tu changes manuellement la date de CD5

voila retest et dis nous

Jocelyn
 

neopaulo

XLDnaute Nouveau
Re : Comparaison de dates

Effectivement, bêtement la première fois j'avais mis le 31 juin... Je m'étais penché sur le problème et aperçu de mon erreur, mais il me semble que si je changer et mets 30/06/2009, le résultat de la formule ne s'actualise pas...

C'est bon chez toi sous cette configuration ??
 

Jocelyn

XLDnaute Barbatruc
Re : Comparaison de dates

re,

Oui chez moi si je change 30/07/2009 par 30/06/2009 avec la formule qui contient *1 cela s'actualise pareil si je reviens a 30/07/2009 nouvelle actualisation.

a tu vérifié que tu n'étais pas en calcul sur ordre dans les options

Jocelyn
 

neopaulo

XLDnaute Nouveau
Re : Comparaison de dates

You-hou !! De retour à la maison, tout fonctionne effectivement parfaitement !
Génial, merci beaucoup, c'est hyper sympa d'avoir passé du temps pour résoudre mon problème.

Et puis merci de m'avoir appris plein de trucs !!
 

sfconstant

XLDnaute Occasionnel
Re : Comparaison de dates

Bonsoir Neopaulo et Joczlyn

Bonsoir le Forum,


Alors que je cherchais une solution à mon problème de comparaison entre dates, j'ai trouvé votre fil.
Mon problème se trouve dans la feuille "Lun 2 Nov 09" à la cellule J16 :

=Equiv(A3;Jour_du_mois;0)

Quand je clique sur la fonction A3 appparaît comme une date et la liste Jour du mois comme un format numérique pourtant le format est en "jjj jj mmm aa"

J'ai essayé dateval() et *1 mais ma fonction a toujours pour résultat :#N/A

Le fichier :http://cjoint.com/?kwtTdsxhJ7

Comment cela se fait-il ?

Merci d'avance et bonne soirée
 

Jocelyn

XLDnaute Barbatruc
Re : Comparaison de dates

Bonjour sfconstant,

Comme le dit neopaulo, je ne sais pas trop a quoi cela sert, mais un test en fichier joint un ou deux points a évoquer :

il est vrai que dans ta cellule A3 il y a un formatun semblant de format jjj jj mmm aa mais ce n'est qu'un semblant car si c'était réellement un format en cliquant sur la cellule la barre de formule afficherait 02/11/2009 la vrais valeur alors que la elle affiche "lun 02 nov 09" c'est pour cela que la fonction DATEVAL ne parvient pas a calculer

Ensuite en feuille Base les cellule fusionnée beaucoup de fonction ne les aime pas trop mais on y arrive par contre EQUIV() ne les aime pas du tout j'ais donc supprimé la fusion

Jocelyn
 

Pièces jointes

  • kwtTdsxhJ7_Pb_comparaison_format_date(1).zip
    79.9 KB · Affichages: 38

sfconstant

XLDnaute Occasionnel
Re : Comparaison de dates

Bonjour à tous,

Merci beaucoup Jocelyn pour ces deux formules qui m'ont aidé à faire une mise en forme conditionnelle si la personne est inscrite dans la feuil le "2 nov 09" (celluleA8) et qu'elle est inscrite dans la feuille "base" comme étant en congés, maladie, formation.

Il me reste à résoudre mon problème de formule sur la feuille "Modèle" en colonne C : pour qu'elle prenne en compte, le planning de la feuille "Base" (J'ai en effet changer : avant j'indiquais la date de congés directement dans la cellule mais en consultant le trés bon site de Monsieur Boisgontier, j'ai trouvé la macro pour faire ce planning).

Voici le fichier retravaillé :
Cijoint.fr - Service gratuit de dépôt de fichiers

Je retourne donc sur mon fil "Planning mensuel"

Merci encore et trés bonne journée

François
 

Discussions similaires

Statistiques des forums

Discussions
312 684
Messages
2 090 917
Membres
104 699
dernier inscrit
Azyra