Saisie rapide de l'heure

ButteDuLac Messages postés 534 Statut Membre -  
ButteDuLac Messages postés 534 Statut Membre -
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!


A voir également:

2 réponses

JONAS KAPEND Messages postés 35 Statut Membre
 
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 534 Statut Membre 40
 
Merci, mais ça ne convient pas. J'ai des champs calculés qui tiennent compte de l'heure.
0
yg_be Messages postés 24281 Statut Contributeur 1 584 > ButteDuLac Messages postés 534 Statut Membre
 
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 534 Statut Membre 40 > yg_be Messages postés 24281 Statut Contributeur
 
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 24281 Statut Contributeur 1 584
 
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 534 Statut Membre 40 > yg_be Messages postés 24281 Statut Contributeur
 
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 534 Statut Membre 40
 
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