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

obliger l'utilisateur à valider en cliquant sur ok

4 réponses
Avatar
Gundt
Re bonjour,

Dans un formulaire commandes, l'utilisateur ne valide pas toujours les
bons de commande en cliquant sur ok.
Je pense par exemple qu'il clique peut-être sur fermer s'il en est à sa
dernière commande car je retrouve des commandes avec un total de 0 et
des lignes de commande parfaitement renseignées (qté, prix et total
ligne qui sont bons).

Fonctionnement :
Tant que l'utilisateur n'a pas terminé sa commande, le focus se trouve
dans le sous formulaire.

Pour sortir du sous-formulaire, l'utilisateur peut cliquer sur ok ou
fermer, ou bien appuyer sur F2 qui lance une macro autokey : qui exécute
un code qui vérifie si l'utilisateur a bien validé les lignes du sous
formulaire et qui place le focus sur ok.

Sur la propriété "Sur clic" du bouton ok, le code suivant :

.[Total général] = Forms![Mon formulaire]![Sf Lignes cdes]![Total général]
' Attachée au bouton OK du formulaire création "Cdes". Sauvegarde
l'enregistrement courant.
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdSaveRecord
' Se positionne sur un nouvel enregistrement.
DoCmd.RunCommand acCmdDataEntry


Comment obliger l'utilisateur à cliquer sur ok et vérifier qu'il clique
bien sur ok pour valider et passer à une autre commande ou sortir ?

Sur Access 97
Merci d'avance.

Gundt

4 réponses

Avatar
Raymond [mvp]
Bonjour.

vu la version 97 , Dirty n'existait pas encore.
ce que tu peux faire, c'est placer un controle case à cocher, bloqué pour ne
pas le cocher par l'opérateur, et la cocher lorsque tu cliques sur OK.
dans l'événement Form_BeforeUpdate, tu testes si la cache est cochée et si
non tu réponds cancel=true
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not Me.case1 Then Cancel = True
End Sub

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le 26 Avril 2007 à 14h assistez à la web TV et faites avancer la recherche
dans votre entreprise
http://www.comscamp.com/Tracker/Redirect.ashx?linkidDb8ed66-f9f8-456a-bdc8-993dda7415fc


"Gundt" a écrit dans le message de news:
462cf1ac$0$18993$
| Re bonjour,
|
| Dans un formulaire commandes, l'utilisateur ne valide pas toujours les
| bons de commande en cliquant sur ok.
| Je pense par exemple qu'il clique peut-être sur fermer s'il en est à sa
| dernière commande car je retrouve des commandes avec un total de 0 et
| des lignes de commande parfaitement renseignées (qté, prix et total
| ligne qui sont bons).
|
| Fonctionnement :
| Tant que l'utilisateur n'a pas terminé sa commande, le focus se trouve
| dans le sous formulaire.
|
| Pour sortir du sous-formulaire, l'utilisateur peut cliquer sur ok ou
| fermer, ou bien appuyer sur F2 qui lance une macro autokey : qui exécute
| un code qui vérifie si l'utilisateur a bien validé les lignes du sous
| formulaire et qui place le focus sur ok.
|
| Sur la propriété "Sur clic" du bouton ok, le code suivant :
|
| .[Total général] = Forms![Mon formulaire]![Sf Lignes cdes]![Total général]
| ' Attachée au bouton OK du formulaire création "Cdes". Sauvegarde
| l'enregistrement courant.
| DoCmd.RunCommand acCmdSelectRecord
| DoCmd.RunCommand acCmdSaveRecord
| ' Se positionne sur un nouvel enregistrement.
| DoCmd.RunCommand acCmdDataEntry
|
|
| Comment obliger l'utilisateur à cliquer sur ok et vérifier qu'il clique
| bien sur ok pour valider et passer à une autre commande ou sortir ?
|
| Sur Access 97
| Merci d'avance.
|
| Gundt
Avatar
Gundt
Bonjour à tous,

Bonjour.

vu la version 97 , Dirty n'existait pas encore.
ce que tu peux faire, c'est placer un controle case à cocher, bloqué pour ne
pas le cocher par l'opérateur, et la cocher lorsque tu cliques sur OK.
dans l'événement Form_BeforeUpdate, tu testes si la cache est cochée et si
non tu réponds cancel=true
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not Me.case1 Then Cancel = True
End Sub


Comme je n'avais pas eu de réponse, j'ai fait ceci :
cacher le bouton fermer quand on entre dans le sous formulaire commandes
et quand on clique sur ok (on sort forcément du sous formulaire) et
seulement après, le bouton fermer réapparaît.

Mais je vais essayer ta solution et si j'arrive à l'appliquer, je
l'adopterai : je serai certain que dans ce cas là, l'utilisateur aura
forcément validé la commande en cliquant sur Ok.

Merci à Raymond.

Gundt

Avatar
Gundt
Bonsoir à tous,

Bonjour.

vu la version 97 , Dirty n'existait pas encore.
ce que tu peux faire, c'est placer un controle case à cocher, bloqué pour ne
pas le cocher par l'opérateur, et la cocher lorsque tu cliques sur OK.
dans l'événement Form_BeforeUpdate, tu testes si la cache est cochée et si
non tu réponds cancel=true
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not Me.case1 Then Cancel = True
End Sub


bon, cela ne marche pas à cause d'un message d'erreur :

J'ai fait comme tu as dit :
pour le formulaire sur avant maj :
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not Me.case1 Then Cancel = True
End Sub

et sur le bouton ok avec la propriété sur clic :
'coche la case à cocher pour pouvoir fermer l'écran
case1 = True

Seulement, quand j'ouvre le formulaire de commande pour créer une
commande, quand j'ai fait la saisie dans le formulaire et que la saisie
de la commande continue pour aller dans le sous formulaire, j'ai un
message d'erreur m'indiquant que je ne peux pas atteindre le sous
formulaire (de même pour pouvoir sortir du sous-formulaire) :
"Impossible d'activer le contrôle Sf lignes cde"

si je coche manuellement la case à cocher, on peut continuer la commande
en activant le sous formulaire. De même pour quitter le sous formulaire,
on a le même message d'erreur ou alors, on est obligé de cocher la case
à cocher.
Comment corriger pour que cela se fasse de façon automatique cad sans
sans intervention de l'utilisateur?

Merci.

Gundt

Avatar
Raymond [mvp]
Bonjour.

il ne faut cocher la case que dans le beforeupdate du sous-formulaire car la
saisie ne sera complète qu'après ce passage. Lorsque tu passes du formulaire
dans le sous-formulaire, l'événement beforeupdate du formulaire se déclenche
et bien sûr la case n'étant pas cochée ça reste sur le formulaire.
pour cocher la case, tu penseras bien de faire:
forms!nomformulaire!sous-formulaire!macase = True

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Gundt" a écrit dans le message de news:
46379cbe$0$31982$
| Bonsoir à tous,
|
| bon, cela ne marche pas à cause d'un message d'erreur :
|
| J'ai fait comme tu as dit :
| pour le formulaire sur avant maj :
| Private Sub Form_BeforeUpdate(Cancel As Integer)
| If Not Me.case1 Then Cancel = True
| End Sub
|
| et sur le bouton ok avec la propriété sur clic :
| 'coche la case à cocher pour pouvoir fermer l'écran
| case1 = True
|
| Seulement, quand j'ouvre le formulaire de commande pour créer une
| commande, quand j'ai fait la saisie dans le formulaire et que la saisie
| de la commande continue pour aller dans le sous formulaire, j'ai un
| message d'erreur m'indiquant que je ne peux pas atteindre le sous
| formulaire (de même pour pouvoir sortir du sous-formulaire) :
| "Impossible d'activer le contrôle Sf lignes cde"
|
| si je coche manuellement la case à cocher, on peut continuer la commande
| en activant le sous formulaire. De même pour quitter le sous formulaire,
| on a le même message d'erreur ou alors, on est obligé de cocher la case
| à cocher.
| Comment corriger pour que cela se fasse de façon automatique cad sans
| sans intervention de l'utilisateur?
|
| Merci.
|
| Gundt