Saisie rapide de l'heure

Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - Modifié par ButteDuLac le 1/02/2017 à 16:22
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 3 févr. 2017 à 16:12
Bonjour,

Dans un formulaire de ma BDD (Access 2010), j'aimerais que l'utilisateur puisse saisir rapidement l'heure.

Ainsi, si l'heure à saisir est 14:45, avec mon masque de saisie (00:00!;0;_), il suffit de taper « 1445 », mais lorsque l'heure à saisir est 9:30 ou encore 14:00, j'aimerais que l'utilisateur puisse n'avoir à saisir que « 930 » ou encore « 14 » et que par défaut, les 00 des minutes soient ajoutés, et que le 0 avant le 9 (9:30 au lieu de 09:30) soit facultatif. J'ai essayé ces différents masques de saisie :
99:99!;0;_
90:99!;0;_
90:00!;0;_
99:99;0;_
9:99;0;_

J'ai aussi essayé des masques du genre 00:00;0;0, etc., pensant que le 0 resterait par défaut et serait pris comme la valeur 0, mais ce n'est qu'un caractère de remplacement... j'ai essayé de mettre la valeur par défaut à 00:00, en pensant que la frappe remplacerait la valeur, une à une, mais dès qu'on saisit un chiffre dans le champ, la valeur par défaut 00:00 s'efface et est remplacée par ... les caractères de remplacement (qu'ils soient _ ou 0) et on doit saisir tous les quatre chiffres encore...

Mon format (dans la table) est « Heure, abrégé ».

Je sais que ça se fait, pour l'avoir vécu dans d'autres BDD où j'étais utilisateur, mais peut-être qu'Access ne le permet pas???

Solution??? Merci!


2 réponses

JONAS KAPEND Messages postés 31 Date d'inscription mercredi 4 décembre 2013 Statut Membre Dernière intervention 1 février 2017
1 févr. 2017 à 16:46
slt ce jonas kapenda de la Rép. Dem. du Congo.
je vous conseil de crée 2 champs textes heure et minute, tout en limitant les nombres de caractère dans chaque champ.
lors de l'impression de l’état vous le fusionné.
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
1 févr. 2017 à 17:30
Merci, mais ça ne convient pas. J'ai des champs calculés qui tiennent compte de l'heure.
0
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
2 févr. 2017 à 21:27
Tu pourrais, en effet, comme suggéré par Jonas Kapenda, avoir deux champs dans le formulaire, et les regrouper afin de stocker l'heure dans la base de données. Pourquoi pas?
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
2 févr. 2017 à 23:25
Oui, merci.... mais je me demande... si la personne doit saisir l'heure, puis faire Tab pour passer aux minutes... puis de nouveau Tab pour sortir du champ des minutes et passer au suivant... où est le temps sauvé? (Ex. : pour 12:45, au lieu de faire [1+2+4+5+Tab], la personne fera [1+2+Tab+4+5+Tab] comme actuellement, ou encore, pour 09:00, elle ferait [9+Tab+Tab], au lieu de [0+9+0+0] comme actuellement... alors qu'avec la méthode que je souhaite obtenir, la personne ferait [9+Tab], ou encore [9+2+Tab] pour 09:20, et c'est tout!)

Et étant donné que j'ai déjà un grand nombre de champs dans ma BDD, ça en ajouterait deux autres, et je devrais, dans chaque formulaire où j'ai une heure à saisir, remplacer le champ initial par deux autres champs (et tout le tralala qui vient avec). Alors que si j'ai un code VBA associé à mon masque de saisie (celui-ci étant déjà sur mon champ), je copie-colle le code et c'est beaucoup plus rapide...

Quand même, merci de la suggestion...
0
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
3 févr. 2017 à 08:12
Ce n'est pas idéal, mais cela ne nécessite pas d'avoir deux champs dans la base de données: tu airais deux champs dans les formulaires, un seul dans la base.
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
3 févr. 2017 à 16:09
Dans le sens que je pourrais mettre un masque avec 99;1;_, j'imagine?
Sauf que ça reste que je dois supprimer tous mes contrôles de champs HEURE pour les remplacer chacun par deux nouveaux contrôles de champ HH et MM (disons que je travaille simultanément sur deux BDD, avec chacune plusieurs champs d'heure, par exemple : [heure_debut] et [heure_fin] pour une formation; [heure_naissance], [heure_X], [heure_Y], etc. (X et Y étant des actions à faire dans la gestion du dossier Z...
Alors je cherche désespérément une façon de procéder, puisque je sais que c'est possible...

Cela dit, votre idée est bonne. C'est juste que ce n'est pas vraiment ce que je cherche.

Mais vous êtes vraiment super de m'aider!
0
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
Modifié par ButteDuLac le 2/02/2017 à 20:39
En Javascript, il y aurait quelque chose qui ressemble (je crois) à ...

function _HVC(h,f){if(h=="")return"";var r=f;var nPos=r.indexOf("HH");if(nPos>-1)r=r.substring(0,nPos)+h.substring(0,2)+r.substring(nPos+2,r.length);nPos=r.indexOf("MM");if(nPos>-1)r=r.substring(0,nPos)+h.substring(2,4)+r.substring(nPos+2,r.length)
nPos=r.indexOf("SS");if(nPos>-1)r=r.substring(0,nPos)+h.substring(4,6)+r.substring(nPos+2,r.length);nPos=r.indexOf("CC");if(nPos>-1)r=r.substring(0,nPos)+h.substring(6,8)+r.substring(nPos+2,r.length);return r}
function _CVH(h,f){if(h=="")return"";var e=f.indexOf("HH");if(e==-1)return"";var m=f.indexOf("MM");if(m==-1)return"";var s=f.indexOf("SS");var t=s==-1?"00":h.substring(s,s+2);var c=f.indexOf("CC");var d=c==-1?"00":h.substring(c,c+2)
return h.substring(e,e+2)+h.substring(m,m+2)+t+d}
function _EVH(e){var h=""+Math.floor(e/(100*3600));if(h.length==1)h="0"+h;e=e%(100*3600);var m=""+Math.floor(e/(100*60));if(m.length==1)m="0"+m;e=e%(100*60);var s=""+Math.floor(e/(100));if(s.length==1)s="0"+s;e=e%(100);var c=""+Math.floor(e)
if(c.length==1)c="0"+c;return h+m+s+c}
function _HSY(){var d=new Date();var h=""+d.getHours();if(h.length==1)h="0"+h;var m=""+d.getMinutes();if(m.length==1)m="0"+m;var s=""+d.getSeconds();if(s.length==1)s="0"+s;var ms=""+d.getMilliseconds();if(ms.length==1)ms="0"+ms
if(ms.length>=2)ms=ms.substr(0,2);return h+m+s+ms}
function _HVE(h){return(h.substr(0,2)*360000)+(h.substr(2,2)*6000)+(h.substr(4,2)*100)+(h.substr(6,2)*1)}
function _JGP(d){return d.forms[0]}


Mais je ne connais aucunement le Javascript (juste une déduction...)

Je n'ai aucune idée comment traduire ça en VBA.

Besoin d'un coup de pouce!!!
0