SAISIE ASSISTÉE DE DATES

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 14 nov. 2007 à 07:44
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 14 nov. 2007 à 11:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44709-saisie-assistee-de-dates

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 nov. 2007 à 11:20
Bon...

J'ai quand même ajusté ce qu'il fallait pour permettre également l'effacement de la totalité sélectionnée, même en cas de saisie non encore complète.

Je ne changerai toutefois pas immédiatement le zip car je suis sur le point de terminer la saisie assistée des heures (principe quelque peu différent).

Je ne changerai donc de zip que lorsque cette partie-là sera également terminée et testée par les "utilisateurs" autour de moi (s'agissant en effet d'un outil destiné à des utilisateurs finaux, leur avis est et doit rester prépondérant, bien évidemment).

Le nouveau zip contiendra donc les DEUX saisies : dates et (procédure distincte) les heures, avec possibilité de choisir heure:minutes:secondes ou heures:minutes.

A très bientôt, donc.
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 nov. 2007 à 09:08
Bonjour Renfields

Il est facile de permettre la saisie de 7/7/7 interprêté en 07/07/2007.
J'ai voulu l'éviter et ne le ferai donc pas pour deux raisons :
1) alourdissement du code (tests supplémentaires) sans gain réel.
2) on y gagnerait certes la frappe d'un chifre de temps à autre (lorsque sur 1 chiffre au lieu de 2) mais alors :
a) on perdrait l'ajout automatique du séparateur (souvent le plus fastidieux)puiqu'aucun code ne saurait déterminer si, à la frappe de 1 (par exemple), l'utilisateur n'a pas l'intention de frapper 12 (par exemple)
b) on ouvre la porte à youtes les étourderies (contraire de la vocation de l'outils, qui est celle d'assurer la meilleure sécurité). Je ne ferai jamais un outil permettant à l'utilisateur de saisir un millésime sur 2 chiffres, y compris si l'outil se sibstitue ) lui pour en écrire 4...(je n'oublie pas les mésaventures 2K ...). La philosophie est simple : ou l'on fait totalement confiance à l'utilisateur et dans ce cas on n'a plus besoin d'un contrôle de saisie, ou on se méfie des étourderies et on évite qu'il puisse frapper un 07 pour signifier une date de naissance 1908, qu'il n'y prenne garde, et que l'on se retrouve avec un magnifique nouveau-né (2008) correspondant à un centenaire.... Je ne ferai donc certainement pas celà ...(j'ai malheusement été le témoin, dans un certain ministère, des dépenses générées des quelquefois des années plus tard, dépenses parmi lesquelles l'intervention de magistrats pour rectifier un acte d'état-civil et le dédommagement d'héritiers n'ayant pu jouir de leurs droits qu'une fois l'affaire réglée...)
En ce qui concerne l'effacement : lorsque la date est complètement frappée, la sélection de la totalité puis l'utilisation de la touche suppr l'efface complètement. Ce que tu dis (effacement du dernier chiffre uniquement) n'arrive que si l'utilisateur sélectionne la totalité d'yne date incomplète puis utilise la touche suppr. J'ai délibérément adopté cette approche pour plusieurs raisons. L'inventaire en serait long, mais en voici quelques unes :

- il est bien rare que l'on décide de saisir une date puis que l'on se ravise en chemin
- lorsque tel est le cas, il est bien plus facile de laisser son doigt sur la touche backspace que de sélectionner puis d'enfoncer la touche suppr.
- su l'utilisateur s'aperçoit de ce qu'il s'est trompé d'un chiffre, il peut :
a) soit le sélectionner (un seul) et directement frapper le caractère (unique) de remplacement
b) soit revenir en arrère en utilisant uniquement la touche backspace

Avant d'arrêter mon choix (j'avais mis en place plusieurs ergonomies), j'ai mis au clavier mon épouse, mes trois filles et mes petits voisins. Leur p^référence unanime a été celle de l'ergonomie finalement choisie.

verifcomplet ne risque pas de traiter un multiple de 10 puisque tu ne peux saisir plus de 10 caractères. En utilisant Mod, je permets de quitter si le champ de saisie est vide, avec simplement Mod, sans avoir à écrire un if supplémentaire pour traiter ce cas, c'est tout)


Je veux bien faire en sorte que l'on puisse choisir MM/DD/YYYY au lieu de mm/dd/yyyy uniquement (j'avais choisi les minuscules uniquement par goût personnel).

La modif ne coûtera pas cher :
changer : Select Case Left(jfr,1) ===>> en Select Case Lcase(jfr,1)) ===>> je le ferai à l'occasion...

En ce qui concerne :

q.SelStart = Len(t)
If q.SelStart < Len(t) Then
q.SelStart = Len(t)
Beep
Exit Function

C'est tout simplement un bout de code qui a échappé au nettoyage final et iù l'un des t était un ch.
Il convient de supptimer ces lignes totalement inutiles

Voilà :

Donc oui : j'apporte 2 petites modification (suppression des lignes devenues inutiles et ayant échappé au nettolyage - ajout du Lcase pour permettre des formats en Majuscules), mai non : je ne modifie absolument pas l'ergonomie.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 nov. 2007 à 07:44
'lut l'ami, petit test:


je selectionne tout le texte, dans le dessein de le vider, je presse 'Suppr' et seul un caractère disparait.

Nous sommes obligés de saisir TOUS les chiffres...
pas possible de saisir 7/7/7, par exemple et que ton code interprète bien 07/07/2007, par exemple

verifcomplet par du principe qu'une date DOIT faire obligatoirement 10 caractères (ou, étrangement, un multiple de 10...)
pas possible, donc, de saisir par exemple 31/12/83

mm/dd/yyyy fonctionne mais pas MM/DD/YYYY

ce test me laisse perplexe...
q.SelStart = Len(t)
If q.SelStart < Len(t) Then
q.SelStart = Len(t)
Beep
Exit Function
End If
Rejoignez-nous