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

Appeler ma Procédure

11 réponses
Avatar
Ayrton [ASC]
Bonsoir à tous,

Voilà, j'ai réalisé une petite procédure pensant faciliter la tâche aux
utilisateurs ; voici ce que j'ai fait :
Private Sub PrixToutesTaxes()
Dim Montant As Double, TVA As Double
Const TauxTVA = 19.6
PrixTTC = Montant * TauxTVA

End Sub

Mon souci est que maintenant je mer etrouve " le bec dans l'eau ;-( "
car je ne vois pas comment la mettre en application dans le formulaire
de saisie.
J'ai bien un champ " Prix_Achat " puis un autre " Montant_TTC " mais je
ne sais pas comment mettre en application cette petite procédure.

Merci à vous pour votre aide

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

10 réponses

1 2
Avatar
3stone
re ;-)

"Ayrton [ASC]"
[...]
| Pour ne rien te cacher, j'ai encore un peu de mal à comprendre comment
| cette fonction peut "marcher " dans ce cas vu qu'aucun de mes controles
| de form n'est nommé dedans ( je ne sais pas si je m'explique bien sur
| ce coup là ! ) J'aurais compris plus vite si à la place de la variable
| UnMontant, j'avais eu le nom du controle de mon form ; il y a une petite
| finesse qui m'échappe un peu; quand je l'aurais mieux assimilée, je
| pense que ça ira un peu mieux pour commencer à me lancer à écrire des
| petites fonctions...


C'est justement tout l'avantage que donne l'utilisation d'une fonction !


Un exemple simple: Un textbox nommé "MonTextBox"

Tu te fabrique une fonction (vue par toi ;-)

Function MaReponse(MonTextBox)
MsgBox "Je dis : " & MonTextBox
End function

et tu l'appelle par : Call MaReponse(MonTextBox)

Ok... mais... que fais tu pour appeler cette fonction à partir
d'un textbox qui se nomme... "TonTextBox" ?

- Ecrire une copie de la première ? que nenni ;-)

C'est justement le "génial" des fonctions, c'est d'utiliser à
la "réception" un variable qui va etre chargée par la valeur
contenue (transmise) dans l'appel...

Donc, lors de l'appel de la fonction, tu transmets la valeur souhaitée,
ici le contenu du textbox "MonTextBox" et à la réception, c'est la variable
qui est chargée par la valeur transmise.

C'est aussi pourquoi, on voit que, après manipulation et traitement
de cette variable, on attribue sa valeur... à la fonction...

ce qui se fait par (dans ton exemple réel) :

PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)

puisque ici, la fonction qui renvoi la valeur se nomme "PrixToutesTaxes"


Bonne nuit ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
Eric
Bonsoir,

Dans le module du formulaire :
Option Compare Database
Const TauxTVA = 19.6

Private Function PrixToutesTaxes(UnMontant As Currency) As Currency
PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
End Function

Puis, sur après mise à jour du controle Prix

Private Sub Prix_AfterUpdate()
Me.LeControleTTC = PrixToutesTaxes(Me.Prix)
End Sub


Bonsoir à tous,

Voilà, j'ai réalisé une petite procédure pensant faciliter la tâche aux
utilisateurs ; voici ce que j'ai fait :
Private Sub PrixToutesTaxes()
Dim Montant As Double, TVA As Double
Const TauxTVA = 19.6
PrixTTC = Montant * TauxTVA

End Sub

Mon souci est que maintenant je mer etrouve " le bec dans l'eau ;-( "
car je ne vois pas comment la mettre en application dans le formulaire
de saisie.
J'ai bien un champ " Prix_Achat " puis un autre " Montant_TTC " mais je
ne sais pas comment mettre en application cette petite procédure.

Merci à vous pour votre aide



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Ayrton [ASC]
Bonjour *Eric*
Dans ton message de news:%23y4h1%,
Tu as pensé très fort :-(*)
Bonsoir,


Bonsoir Eric,

Dans le module du formulaire :
Option Compare Database
Const TauxTVA = 19.6

Private Function PrixToutesTaxes(UnMontant As Currency) As Currency
PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
End Function

Puis, sur après mise à jour du controle Prix

Private Sub Prix_AfterUpdate()
Me.LeControleTTC = PrixToutesTaxes(Me.Prix)
End Sub


Encore une fois, un grand merci pour ton aide ;-)
Cordialement

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
Ayrton [ASC]
Bonjour *Eric*
Dans ton message de news:%23y4h1%,
Tu as pensé très fort :-(*)
Bonsoir,

Dans le module du formulaire :
Option Compare Database
Const TauxTVA = 19.6

Private Function PrixToutesTaxes(UnMontant As Currency) As Currency
PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
End Function

Puis, sur après mise à jour du controle Prix

Private Sub Prix_AfterUpdate()
Me.LeControleTTC = PrixToutesTaxes(Me.Prix)
End Sub


Re Eric,

Je rencontre un souci avec un message d'erreur me stipulant une erreur
de type ;-(
J'ai essayé de modifier le type de mes données mais j'ai toujours le
même message.
Mes Champs "Prix_Achat" et " Prix_TTC " sont pourtant bien en "
monéraire " ; j'ai essayé en les mettant en " Numérique" mais c'est
pareil.

A tout hasard, aurais tu une petite idée ?
Encore merci

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
3stone
Salut,

"Ayrton [ASC]"
| >
| > Dans le module du formulaire :
| > Option Compare Database
| > Const TauxTVA = 19.6
| >
| > Private Function PrixToutesTaxes(UnMontant As Currency) As Currency
| > PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
| > End Function
| >
| > Puis, sur après mise à jour du controle Prix
| >
| > Private Sub Prix_AfterUpdate()
| > Me.LeControleTTC = PrixToutesTaxes(Me.Prix)
| > End Sub
|
| Re Eric,
|
| Je rencontre un souci avec un message d'erreur me stipulant une erreur
| de type ;-(
| J'ai essayé de modifier le type de mes données mais j'ai toujours le
| même message.
| Mes Champs "Prix_Achat" et " Prix_TTC " sont pourtant bien en "
| monéraire " ; j'ai essayé en les mettant en " Numérique" mais c'est
| pareil.


Peut-être que tu passe "UnMontant" non renseigné ? un Null ?

Modifie ainsi :

Function PrixToutesTaxes(UnMontant As Variant) As Currency
if IsNull(UnMontant) Then
PrixToutesTaxes = 0
else
PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
end if
End Function


Sinon, monétaire ou numérique au départ doivent le faire...
bien que le format monétaire "c'est fait pour"
comme on dit chez moi ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
Ayrton [ASC]
Re Eric,

Après bie navoir vérifié ce que j'avais fait un peu rapidement, je
m'aperçois que j'avais mal placé la constante !
Je l'ai bien remise dans le module de mon form et tout bien refait ; mon
souci maintenant :
Des que le curseur sor du controle " Prix", un message d'ereur me dit !
" Erreur de compilation ! Tableau attendu
Et là, tu te doutes bie nque je ne comprends pas bie nce que ça veux
dire ;-(
De plus, vba me surligne en jaune la ligne : PrixToutesTaxes =
UnMontant * (1 + TauxTVA / 100) et en gris le nom : UnMontant.

Arrivé à ce stade, je ne vois pas quoi faire car je ne comprends pas
bien ce message.

Merci

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
Avatar
Ayrton [ASC]
Bonjour *3stone*
Dans ton message de news:,
Tu as pensé très fort :-(*)
Salut,


Salut Pierre ;-)
Peut-être que tu passe "UnMontant" non renseigné ? un Null ?

Modifie ainsi :

Function PrixToutesTaxes(UnMontant As Variant) As Currency
if IsNull(UnMontant) Then
PrixToutesTaxes = 0
else
PrixToutesTaxes = UnMontant * (1 + TauxTVA / 100)
end if
End Function


Bingo ! ! !
Merci 3 stone, ça fonctionne au poil !
Par contre, pour ma gouverne perso et pour comprendre quand comment ça
se passe, est ce que je dit une bêtise si je te demande, dans ce cas là,
si "UnMontant " est assimilé à une variable ?
Je pense à ça car je n'ai pas de champ " UnMontant " et au vu du reste
du code, ça me parait y ressembler mais je préfère quand même poser la
question ;-)

Sinon, monétaire ou numérique au départ doivent le faire...
bien que le format monétaire "c'est fait pour"
comme on dit chez moi ;-)


C'est sûr que c'est mieux adapté ! Et de plus, effectivement, ça marche
dans les deux cas.
Merci Mr 3stone ;-)

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
3stone
Bons.. nuit ! ;-)

"Ayrton [ASC]"
[...]
| Par contre, pour ma gouverne perso et pour comprendre quand comment ça
| se passe, est ce que je dit une bêtise si je te demande, dans ce cas là,
| si "UnMontant " est assimilé à une variable ?
| Je pense à ça car je n'ai pas de champ " UnMontant " et au vu du reste
| du code, ça me parait y ressembler mais je préfère quand même poser la
| question ;-)


J'ai pas suivi, je viens de rentrer...
et envoyé avant ton dernier message.

(mais me suis dit: jete un oeil, Ayrton à un problème ! :o))


En fait, le problème des fonctions et autres sub dans lequelles
on type les variables destinées à recueillir le paramètre arrive
lorsque (par exemple dans une requête) la données est "vide"
donc un beau NULL.

Dim UnMontant As Currency

fonctionne aussi longtemps que tu n'essaye pas de faire

UnMontant = NULL

Seul une variable de type Variant peut "véhiculer" un Null.

L'inconvéniant, est que le variant est moins économique en espace
mémoire et lourd à manipuler... puisqu'il peut tout contenir!

C'est la raison pour laquelle que, en cas de doute sur la valeur
présentée à la fonction, il est bon d'utiliser un Variant... que l'on
se dépêche de typer pour la suite des traitements.

PS: Schématique, mais c'est ce qu'il faut retenir en pratique ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Avatar
Ayrton [ASC]
Bonjour *3stone*
Dans ton message de news:,
Tu as pensé très fort :-(*)

Bons.. nuit ! ;-)


Re Pierre ;-)

J'ai pas suivi, je viens de rentrer...
et envoyé avant ton dernier message.

(mais me suis dit: jete un oeil, Ayrton à un problème ! :o))


T"es vraiment gentil 3stone ! Et en plus, comme tu t'en doutais, j'avais
effectivement un problème ! ( Une fois de plus lol )

En fait, le problème des fonctions et autres sub dans lequelles
on type les variables destinées à recueillir le paramètre arrive
lorsque (par exemple dans une requête) la données est "vide"
donc un beau NULL.

Dim UnMontant As Currency

fonctionne aussi longtemps que tu n'essaye pas de faire

UnMontant = NULL

Seul une variable de type Variant peut "véhiculer" un Null.

L'inconvéniant, est que le variant est moins économique en espace
mémoire et lourd à manipuler... puisqu'il peut tout contenir!

C'est la raison pour laquelle que, en cas de doute sur la valeur
présentée à la fonction, il est bon d'utiliser un Variant... que l'on
se dépêche de typer pour la suite des traitements.


Compris pour tout ça ; à vrai dire, ce qui m'a perturbé, c'est
UnMontant ; je pensais que dans une fonction, ce qui venait après son
nom, devait être le nom d'un controle du form ; donc, n'ayant pas de
controle UnMontant dans mon formulaire, j'avais du mal à interprêter
cette petite fonction et à essayer de la comprendre ( j'aime bien
comprendre ce que je fais ou ce qu'on m'explique car ça me parait plus
intelligent plutôt que de recopier bêtement, même si dès fois j'ai un
peu de mal à piger du premier coup ! ! ).
Pour ne rien te cacher, j'ai encore un peu de mal à comprendre comment
cette fonction peut "marcher " dans ce cas vu qu'aucun de mes controles
de form n'est nommé dedans ( je ne sais pas si je m'explique bien sur
ce coup là ! ) J'aurais compris plus vite si à la place de la variable
UnMontant, j'avais eu le nom du controle de mon form ; il y a une petite
finesse qui m'échappe un peu; quand je l'aurais mieux assimilée, je
pense que ça ira un peu mieux pour commencer à me lancer à écrire des
petites fonctions mais pour l'instant, à chaque fois que j'essaie, il y
a toujours une " bêtise " que je n'ai pas comprise et ça me bloque
;-(...............et donc je viens sur le NG pour avoir une réponse à
mon souci ! ! ;-)

PS: Schématique, mais c'est ce qu'il faut retenir en pratique ;-)


Eh bie nc'est ce que je vais m'efforcer de retenir ; je vais lire et
relire tout ça pour que ça me serve de leçons et me dire aussi que tes
explications me servent à quelque chose..................comme toutes
celles que tu m'as déjà donné d'ailleurs !

Encore merci Pierre
@+ tard ;-)

--
@+
Ayrton
http://cerbermail.com/?ljOK1CRTMt
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr
Charte NG :
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm

Avatar
3stone
"Ayrton [ASC]"
[...]
| ( j'espère que tu ne travailles pas demain ! )


Je ne "travaille" jamais...
enfin... plus !

;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://users.skynet.be/mpfa/
1 2