Bonjour,

Pour faire suite à mon précédent message sur User à propos d'une formule testant qu'une saisie est bien une date mise en forme comme une vrai date.

J'ai élaboré (en attendant) la formule suivante :
A1= cellule à tester
B2=ET(OU(TYPE(A1)=1;TYPE(A1)=8);CELLULE("FORMAT";A1)>="D1";CELLULE("FORMAT";A1)<="D5";MAINTENANT()=MAINTENANT())

Je propose que l'on ajoute une fonction à LibO Calc pour réaliser cette tâche 
en natif.

Le nom possible :
US : ISDATEWELLFORMATTED(...;[...];[...])
FR : ESTDATEBIENFORMATE(...;[...];[...])

Les paramètres possibles :
1er obligatoire : Référence de la cellule testée (bien tester que indirect() 
est accepté)

2de facultatif : Caractère => CODE du TYPE de format attendu
(voir CELLULE("FORMAT";REF_CELL) Ex. "'D1'-'D5'" pour tester une valeur numérique ayant un format de type D1 et D5; ou ">='D1'-<='D5'" pour tester une valeur ayant un format de type compris entre ... soit date simple, date raccourcis, tronqué, ou complété d'un heure)

                      Par défaut "'D1'" (date au format simple DD-MM-AAAA ou 
assimilé)

3ème facultatif : Caractère => Description du format personnalisé personnalisé (TYPE=G par le fonction CELLULE("FORMAT";REF)) attendu avec une description ou doit être placé le DD les MM et les AA (ex. "\"année \"" YYYY \" le \" MM \" jour \" DD") A noter j'ai mis le \ en caractère d'Esc, je suis pas sûr que ce soit le plus approprié pour LibO.

                                Par défaut pas de prise en charge d'un format 
personnalisé

Pour simplifier les codes erreurs retournés, je pense que seul un problème de 
paramètre doit être signalé en cas d'erreur.

Cette fonction n'existant apparemment pas dans MS Excel, je pense qu'il faut prévoir dès maintenant comment elle serait convertie par le filtre pour pouvoir obtenir un maximum de compatibilité lorsque l'on enregistrerai au format concurrent.

A noter que cette fonction doit faire partie des fonctions réévalués systématiquement si une cellule est modifié dans la classeur au même titre que maintenant() et alea().

La fonction CELLULE("";) devrait d'ailleurs aussi être dans ce cas...

En espérant avoir fait avancé la chose...

A+

Samuel

--
Envoyez un mail à discuss+h...@fr.libreoffice.org pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/discuss/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés

Répondre à