Le 28/06/2011 20:35, lutch a écrit :
Le 28/06/11 15:16, l'honorable Samuel Mounier (Liste CGO) nous a écrit :
Bonjour,
J'ai eu besoin de la fonction est ESTDATE (équivalent de ESTNUM pour
les dates) mais je ne l'ai pas trouvé.
Apparemment elle n'existe pas dans le tableur. J'ai donc tenté de
réaliser une formule équivalente.
J'en suis arrivé à cela...
A1= cellule à tester
B2=ET(OU(TYPE(A1)=1;TYPE(A1)=8);CELLULE("FORMAT";A1)>="D1";CELLULE("FORMAT";A1)<="D5";MAINTENANT()=MAINTENANT())
Cette formule retourne true ou false si la cellule testée est une date
(saisie ou calculé par formule mais pas une chaine de caractère)
dont la valeur numérique est bien mis en forme avec au minimum
l'affichage du mois et de l'année ou du mois et du jour (ex. 11/2010
ou 31/12)
Remarque : Cette formule ne prend pas en compte les mises en forme
personnalisées qui renverraient bien ces informations mais dans un
format "G" (tout les autres formats) (voir l'aide de
CELLULE("FORMAT";A1)
Remarque 2 : On peut vouloir imposer la présence des valeurs JOUR
MOIS et ANNEE en mettant non pas une fourchette allant de D1 à D5
mais en mettant D1 OU D4.
J'avais bien trouvé sur internet NON(ESTERREUR(ANNEE(A1))), mais je
pouvais avoir n'importe qu'elle valeur numérique qui semblait être
une valeur date valide.
Je n'ai pas réussi à utiliser DATEVAL() avec autre chose que des
chaines de caractère en paramètres.
Qu'en pensez vous, est-ce la meilleure solution ?
N'existe-il pas plus simple... ?
Est-ce compatible avec les tableurs concurrent (j'en doute un peu) ?
A noter : J'ai mis le maintenant()=maintenant() pour forcer la
réévaluation systématique de la fonction cellule à chaque mise à jour
du tableau (même le F9 n'agit sans ça).
A+
Samuel Mounier
Bonsoir,
j'ai un peu cherché sans trouver encore de réponse simple. Ceci étant,
il y a plus expert que moi.
Ce qui me choque par contre c'est de constater qu'en dehors du texte,
tout est assimilé à un nombre valide et donc évalué comme une date.
Bonsoir,
Une valeur numérique est aussi une date. Un nombre entier est une date :
40722 formaté en date devient 28/06/2011. Normal, c'est le nombre de
jours depuis la date référence par défaut (30/12/1899).
S'il y a une partie décimale de ,0 à ,1, c'est la partie horaire :
40722,5 donne le 28/06/2011 12:00
La démarche de Samuel est la bonne à mon avis, mais il y a aussi un
piège (un bug ?)
Soit la valeur décimale 40722 en A1
= CELLULE ("FORMAT"; A1) retourne F0 (normal), mais une application au
format date ne change rien, sauf à forcer le recalcul (Ctrl + Maj + F9)
Dommage…
Lucien
Samuel, j'ai pas mieux comme solution. Désolé.
Bon surf,
Christian
--
Visitez http://christianwtd.free.fr/ pour débuter avec Calc, de LibreOffice ou
OpenOffice.org
--
Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous
désinscrire
Les archives de la liste sont disponibles à
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne
pourront pas être supprimés