OVH Cloud OVH Cloud

fonction vers module

4 réponses
Avatar
dfcena
Bonjour
J'ai une fonction que je souhaite mettre dans un module=20
car celle-ci est utilis=E9 par 2 formulaires et que le=20
nombre de cas peut varier (plus facile lors de la=20
maintenance)
Function delaipaie()
Dim Varan As Integer, Varmois As Integer, Varjour As=20
Integer, Cas As Integer
Varan =3D Year(Me.DateF)
Varmois =3D Month(Me.DateF)
Varjour =3D Day(Me.DateF)
Cas =3D Me.crtlf
Select Case Cas
Case 1
delaipaie =3D DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie =3D DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function
J'appelle ma proc=E9dure par
Me.ctrlx=3Ddelaipaie()
Dans mon formulaire Je dois garder la d=E9claration des=20
variables ainsi que
Varan =3D Year(Me.DateF)
Varmois =3D Month(Me.DateF)
Varjour =3D Day(Me.DateF)
Cas =3D Me.crtlf
J'ai essayer de mettre dans un module
Function delaipaie()
Select Case Cas
Case 1
delaipaie =3D DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie =3D DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function

Mais cela ne fonctionne pas
Quelle solution pourrait fonctionner?

4 réponses

Avatar
DUPARC
1 ere question ta fonction est-elle appelle public function
2eme tes variabletes sont-elles globales
3eme pourquoi ne mes-tu pas tes variable dans l'appelle de ta fonction


je pense que se qui suit devrait fonctionner
dans ta fenetre j'aurai mis

Me.ctrlxÞlaipaie( Year(Me.DateF), Varmois = Month(Me.DateF),Varjour Day(Me.DateF),Me.crtlf)

et dans ton module
public Function delaipaie(Varan As Integer, Varmois As Integer, Varjour As
Integer, Cas As Integer) as variant
Select Case Cas
Case 1
delaipaie = DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie = DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function
Avatar
Eric
Bonjour dfcena,

il faut que tu passes 2 arguments à ta fonction:
Function delaipaie(UneDate as Date, UnCode as Integer)

où l'argument UneDate sera la valeur du controle DateF et un code la
valeur du contrôle crtlf

donc dans le code de la fonction tu remplaces tous les occurences de
DateF par UneDate et celle de ctrlf par UnCode.

L'appel de ta fonction dans les formulaires sera du genre :
Me.ctrlxÞlaipaie(Me.DateF,Me.ctrlf)

A+
Eric

"dfcena" écrivait
news:214dd01c45a9c$f19cce40$:

Bonjour
J'ai une fonction que je souhaite mettre dans un module
car celle-ci est utilisé par 2 formulaires et que le
nombre de cas peut varier (plus facile lors de la
maintenance)
Function delaipaie()
Dim Varan As Integer, Varmois As Integer, Varjour As
Integer, Cas As Integer
Varan = Year(Me.DateF)
Varmois = Month(Me.DateF)
Varjour = Day(Me.DateF)
Cas = Me.crtlf
Select Case Cas
Case 1
delaipaie = DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie = DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function
J'appelle ma procédure par
Me.ctrlxÞlaipaie()
Dans mon formulaire Je dois garder la déclaration des
variables ainsi que
Varan = Year(Me.DateF)
Varmois = Month(Me.DateF)
Varjour = Day(Me.DateF)
Cas = Me.crtlf
J'ai essayer de mettre dans un module
Function delaipaie()
Select Case Cas
Case 1
delaipaie = DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie = DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function

Mais cela ne fonctionne pas
Quelle solution pourrait fonctionner?




Avatar
Eric
.../...
et mieux , tu types ta fonction puisqu'elle retourne une date

Function delaipaie(UneDate as Date, UnCode as Integer) as Date

Precision: remplacer le Me.DateF par UneDate, idem pour Me.ctrlf par UnCode
dans la fonction.

Eric
Avatar
dfcena
ça fonctionne en mettant
Me.ctrlxÞlaipaie( Year(Me.DateF), Month Me.DateF), Day
(Me.DateF), Me.crtlf)

-----Message d'origine-----
1 ere question ta fonction est-elle appelle public
function

2eme tes variabletes sont-elles globales
3eme pourquoi ne mes-tu pas tes variable dans l'appelle
de ta fonction



je pense que se qui suit devrait fonctionner
dans ta fenetre j'aurai mis

Me.ctrlxÞlaipaie( Year(Me.DateF), Varmois = Month
(Me.DateF),Varjour =

Day(Me.DateF),Me.crtlf)

et dans ton module
public Function delaipaie(Varan As Integer, Varmois As
Integer, Varjour As

Integer, Cas As Integer) as variant
Select Case Cas
Case 1
delaipaie = DateSerial(Varan, Varmois, Varjour + 8)
Case 2
delaipaie = DateSerial(Varan, Varmois + 1, 0)
Case ....
End Select
End Function



.