Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Masque de saisie (automatique)

7 réponses
Avatar
Loïc V.
Bonjour,

comment dans un formulaire continu, puis-je faliter la saisie d'une donnée
calquée sur la précédente?

Exemple:

Si je dois entrer la valeur 1205
Comment puis je faire pour que n'entre que la donnée 6 et qu'il me mette
automatiquement 1206?

Merci beaucoup,

Loïc

7 réponses

Avatar
Cyrille
Que ce passe t'il quand on arrive à 1209??

"Loïc V." a écrit :

Bonjour,

comment dans un formulaire continu, puis-je faliter la saisie d'une donnée
calquée sur la précédente?

Exemple:

Si je dois entrer la valeur 1205
Comment puis je faire pour que n'entre que la donnée 6 et qu'il me mette
automatiquement 1206?

Merci beaucoup,

Loïc




Avatar
Loïc V.
Je crois que je me suis mal fait comprendre.

Dernier enregistrement = 4567
si je tape uniquement la valeur 8, il me met 4568
Si je tape uniquement la valeur 12, il me met 4512
si je tape uniquement la valeur 345, il me met 4345

En gros, ce sont des nombre de 4 chiffres que je peux entrer. Si j'en tape
qu'un seul, il me met par défaut:

- les trois derniers du dernier enregistrement
- le chiffre tapé

En continu, cela donne:

enregistrement 1: 1456
Enregistrement 2: 2 puis "enter" = 1452
Enregistrement 3: 7 puis "enter" = 1457
Enregistrement 4: 15 puis "enter" = 1415
ect...


C'est juste un procédé qui me permet d'aller plus vite.
Il doit y avoir une solution, vu que j'ai un vieux truc qui fonctionne sous
DOS, qui me permet ce genre de saisie.

bien à toi,

Loïc



"Cyrille" a écrit :

Que ce passe t'il quand on arrive à 1209??

"Loïc V." a écrit :

> Bonjour,
>
> comment dans un formulaire continu, puis-je faliter la saisie d'une donnée
> calquée sur la précédente?
>
> Exemple:
>
> Si je dois entrer la valeur 1205
> Comment puis je faire pour que n'entre que la donnée 6 et qu'il me mette
> automatiquement 1206?
>
> Merci beaucoup,
>
> Loïc
>
>


Avatar
Dragan
Bonjour Loïc,
dans l'événement touche relâchée du control essaie ce code :

If KeyCode=VbKeyTab Or KeyCode=VbKeyReturn Then
NomControl.Value=_
Left(DLast('NomChamp ','NomTable'),4-Len(NomControl.Text)) & NomControl.Text
End if

Remplace NomChamp, NomTable et NomControl par les noms de ton champ, de ta
table et du control de saisie

"Loïc V." a écrit :

Je crois que je me suis mal fait comprendre.

Dernier enregistrement = 4567
si je tape uniquement la valeur 8, il me met 4568
Si je tape uniquement la valeur 12, il me met 4512
si je tape uniquement la valeur 345, il me met 4345

En gros, ce sont des nombre de 4 chiffres que je peux entrer. Si j'en tape
qu'un seul, il me met par défaut:

- les trois derniers du dernier enregistrement
- le chiffre tapé

En continu, cela donne:

enregistrement 1: 1456
Enregistrement 2: 2 puis "enter" = 1452
Enregistrement 3: 7 puis "enter" = 1457
Enregistrement 4: 15 puis "enter" = 1415
ect...


C'est juste un procédé qui me permet d'aller plus vite.
Il doit y avoir une solution, vu que j'ai un vieux truc qui fonctionne sous
DOS, qui me permet ce genre de saisie.

bien à toi,

Loïc



"Cyrille" a écrit :

> Que ce passe t'il quand on arrive à 1209??
>
> "Loïc V." a écrit :
>
> > Bonjour,
> >
> > comment dans un formulaire continu, puis-je faliter la saisie d'une donnée
> > calquée sur la précédente?
> >
> > Exemple:
> >
> > Si je dois entrer la valeur 1205
> > Comment puis je faire pour que n'entre que la donnée 6 et qu'il me mette
> > automatiquement 1206?
> >
> > Merci beaucoup,
> >
> > Loïc
> >
> >


Avatar
Loïc V.
Merci Dragan!!

Mais il doit y avoir une erreur de syntaxe là: NomControl.Value=_ (t'es
certain du underscore ?).

Access me dit aussi qu'il y a une erreur là: Left(DLast('NomChamp
','NomTable'), (les ' ....' sont ils appropriés ou dois-je plutôt mettre des
"...." ou des [.....] ?

Et il n'y aurait pas moyen tout simplement de jouer avec les numauto qui
reprendrait à partir du dernier enregistrement ?

Bien à toi,

Loïc

"Dragan" a écrit :

Bonjour Loïc,
dans l'événement touche relâchée du control essaie ce code :

If KeyCode=VbKeyTab Or KeyCode=VbKeyReturn Then
NomControl.Value=_
Left(DLast('NomChamp ','NomTable'),4-Len(NomControl.Text)) & NomControl.Text
End if

Remplace NomChamp, NomTable et NomControl par les noms de ton champ, de ta
table et du control de saisie

"Loïc V." a écrit :

> Je crois que je me suis mal fait comprendre.
>
> Dernier enregistrement = 4567
> si je tape uniquement la valeur 8, il me met 4568
> Si je tape uniquement la valeur 12, il me met 4512
> si je tape uniquement la valeur 345, il me met 4345
>
> En gros, ce sont des nombre de 4 chiffres que je peux entrer. Si j'en tape
> qu'un seul, il me met par défaut:
>
> - les trois derniers du dernier enregistrement
> - le chiffre tapé
>
> En continu, cela donne:
>
> enregistrement 1: 1456
> Enregistrement 2: 2 puis "enter" = 1452
> Enregistrement 3: 7 puis "enter" = 1457
> Enregistrement 4: 15 puis "enter" = 1415
> ect...
>
>
> C'est juste un procédé qui me permet d'aller plus vite.
> Il doit y avoir une solution, vu que j'ai un vieux truc qui fonctionne sous
> DOS, qui me permet ce genre de saisie.
>
> bien à toi,
>
> Loïc
>
>
>
> "Cyrille" a écrit :
>
> > Que ce passe t'il quand on arrive à 1209??
> >
> > "Loïc V." a écrit :
> >
> > > Bonjour,
> > >
> > > comment dans un formulaire continu, puis-je faliter la saisie d'une donnée
> > > calquée sur la précédente?
> > >
> > > Exemple:
> > >
> > > Si je dois entrer la valeur 1205
> > > Comment puis je faire pour que n'entre que la donnée 6 et qu'il me mette
> > > automatiquement 1206?
> > >
> > > Merci beaucoup,
> > >
> > > Loïc
> > >
> > >


Avatar
Loïc V.
Bein, en fait, en testant, j'ai trouvé un truc assez simple:

Valeur par défaut = Last ("controle") +2

en ouvrant le formuaire, il me met par défaut la valeur "2", j'ai donc créer
un code sur l'ouverture pour qu'il ne me mette rien si la valeur 2 apparaît.

Mais qd même un petit souci.
Lors de l'ouverture, il me met rien (OK), et je tape 783 (par exemple)
Lors de la deuxième saisie, il ne me met pas 784 mais le nombre qui
apparaissait lors de la saisie N-2 en l'augmentant de 2.
Puis, lors de la troisième saisie, ca marche bien.

Pourquoi ca foire lors de la deuxième sasie et pas après ?

Notez que je capte pas pourquoi Last ("controle") +2, et bien, c'est +2. au
départ, j'avais essayé avec +1 mais comme ça marchait pas, j'ai tenté +2, et
ça a fonctionné... (coup de bol). Est-ce que +2 a un lien avec le fait que la
valeur obtenue lors de la 2ème saisie foire ?

Merci

Loîc

PS:
Avatar
Loïc V.
Veuillez m'excuser, je me mélange les pinceaux.
J'étais sur deux aidées à la fois. Celle de l'incréentation à partir du
dernier enregistrement (voir dernier message).

Mais je n'ai pas encore trouvé d'astuce pour la saisie "automatique".
Un grand merci à Dragan, mais s tu as le temps, pourrais tu revoir la
syntaxe de ta solution, stp ?

Merci beaucoup
Avatar
Dragan
Bonjour Loïc, l'underscore n'est là que pour indiquer que la ligne continue
en dessous. Donc retire-le.
Ce code ne marche que pour les champs ayant 4 caractères comme tu l'as
indiqué dans ton second post.

If KeyCode=VbKeyTab Or KeyCode=VbKeyReturn Then
NomControl.Value Left(DLast('NomChamp ','NomTable'),4-Len(NomControl.Text)) & NomControl.Text
End if


"Loïc V." a écrit :

Veuillez m'excuser, je me mélange les pinceaux.
J'étais sur deux aidées à la fois. Celle de l'incréentation à partir du
dernier enregistrement (voir dernier message).

Mais je n'ai pas encore trouvé d'astuce pour la saisie "automatique".
Un grand merci à Dragan, mais s tu as le temps, pourrais tu revoir la
syntaxe de ta solution, stp ?

Merci beaucoup