OVH Cloud OVH Cloud

formule optionnelle

5 réponses
Avatar
olivier
Bonjour,

Dans mon formulaire, l'utilisateur à le choix entre 2 zones de saisie A ou B.
Si l'utilisateur rempli le champs A, je veux une formule dans le champs B
(qui utilise le champs A) et si le champs B est rempli je voudrais que le
calcul inverse soit fait dans le champs A.

J'ai bien pensé à rajouter un champs avec une formule avec des conditions
mais je préfèrerais éviter cette solution. (déjà trop de champs)

Merci

5 réponses

Avatar
Gafish
Bonjour,

olivier wrote:
Si l'utilisateur rempli le champs A, je veux une formule dans
le champs B (qui utilise le champs A) et si le champs B est rempli je
voudrais que le calcul inverse soit fait dans le champs A.


Il faut que tu mettes ce bout de code sur l'évenement Perte Focus (Lost
Focus) de tes deux zones :
If IsNull(Me.A) or Me.A = "" then
'on ajoute la formule dans B
ElseIf IsNull(Me.B) or Me.B = "" then
'on ajoute la formule dans A
Else
'que prévois tu s'il a renseigné les deux ?
End If

Il reste à compléter ici les zones en commentaires. Qu'appeles-tu mettre une
formule dans A et mettre une formule dans B ? Sinon que fais tu s'il ajoute
dans les deux ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
olivier
Merci Arnaud

ce sont des formules du type
dans A =[B]/[C]
dans B =[A]*[C]

les champs ne seront donc jamais remplis tout les deux.




Bonjour,

olivier wrote:
Si l'utilisateur rempli le champs A, je veux une formule dans
le champs B (qui utilise le champs A) et si le champs B est rempli je
voudrais que le calcul inverse soit fait dans le champs A.


Il faut que tu mettes ce bout de code sur l'évenement Perte Focus (Lost
Focus) de tes deux zones :
If IsNull(Me.A) or Me.A = "" then
'on ajoute la formule dans B
ElseIf IsNull(Me.B) or Me.B = "" then
'on ajoute la formule dans A
Else
'que prévois tu s'il a renseigné les deux ?
End If

Il reste à compléter ici les zones en commentaires. Qu'appeles-tu mettre une
formule dans A et mettre une formule dans B ? Sinon que fais tu s'il ajoute
dans les deux ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Gafish
olivier wrote:
Merci Arnaud

ce sont des formules du type
dans A =[B]/[C]
dans B =[A]*[C]

les champs ne seront donc jamais remplis tout les deux.


Tu peux éventuellement faire la chose suivante :
- sur l'evenement PerteFocus de la zone A
If Not IsNull(Me.A) or Me.A <> "" then
Me.B = Me.A / Me.C
End If

- sur l'evenement PerteFocus de la zone B
If Not IsNull(Me.B) or Me.B <> "" then
Me.A = Me.B / Me.C
End If

Méfie toi également de la zone C peut-être, si elle est nulle ou égale à 0
tu auras des soucis de division par 0.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
olivier
Merci beaucoup ca marche


PS: je suis débutant et je ne pensais pas qu'une si petite chose soit si
compliquée !



olivier wrote:
Merci Arnaud

ce sont des formules du type
dans A =[B]/[C]
dans B =[A]*[C]

les champs ne seront donc jamais remplis tout les deux.


Tu peux éventuellement faire la chose suivante :
- sur l'evenement PerteFocus de la zone A
If Not IsNull(Me.A) or Me.A <> "" then
Me.B = Me.A / Me.C
End If

- sur l'evenement PerteFocus de la zone B
If Not IsNull(Me.B) or Me.B <> "" then
Me.A = Me.B / Me.C
End If

Méfie toi également de la zone C peut-être, si elle est nulle ou égale à 0
tu auras des soucis de division par 0.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Gafish
olivier wrote:
Merci beaucoup ca marche


PS: je suis débutant et je ne pensais pas qu'une si petite chose soit
si compliquée !




Disons qu'il y a plusieurs choses qui entrent en jeu. Déja vu que c'est un
calcul, il faut réfléchir quand le mettre à jour. Ici sur l'evenement Perte
Focus, c'est à dire dès que tu sors d'une zone, cela permet de refaire le
calcul à chaque modif.
Ensuite il faut tester si c'est null ou non, ou vide, et enfin le calcul en
lui même. Pour ton info, Me veut dire le conteneur en cours, ici le
formulaire. Donc Me.A représente la zone A du formulaire.

--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr