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

(debutant) Déclarations et passage de variables. Help !

5 réponses
Avatar
alainL
Le sub suivant me donne la date de Paques. (et plus tard, celles des autres
fetes)
--------------------------------------------------------------------------------------------------------------
Private Sub FetesMobiles(ByVal Annee As Integer)

Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date


......................
paques = (Lj & "/" & Lm & "/" & Annee)

End Sub
______________________________________________________

Je l'appelle ds un autre sub :
--------------------------------------------------------------------------------------------------------
Private Sub Rafraichir()
...
Dim Annee As Integer

Annee = MonthCalendar1.SelectionStart.Year
...
TextBox1.Text = "Pâques est le " & paques
___________________________________________________________

J'obtiens deux messages d'erreur:
1- Argument non spécifié pour le param "Annee" de Private Sub
FetesMobiles(Annee as integer)
2- Le nom "paques" n'est pas déclaré

A part ça, le progr tourne mais y a qd meme qqchose qui cloche !
Merci pour une correction .

alain

5 réponses

Avatar
PierreSlideM
Il faut modifier le code ainsi

Private Function FetesMobiles(ByVal Annee As Integer)
Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date
paques = (Lj & "/" & Lm & "/" & Annee)
Return paques
End Function

et

Dim Annee As Integer
Annee = MonthCalendar1.SelectionStart.Year
TextBox1.Text = "Pâques est le " & FetesMobiles (Annee)



"alainL" a écrit :

Le sub suivant me donne la date de Paques. (et plus tard, celles des autres
fetes)
--------------------------------------------------------------------------------------------------------------
Private Sub FetesMobiles(ByVal Annee As Integer)

Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date


......................
paques = (Lj & "/" & Lm & "/" & Annee)

End Sub
______________________________________________________

Je l'appelle ds un autre sub :
--------------------------------------------------------------------------------------------------------
Private Sub Rafraichir()
...
Dim Annee As Integer

Annee = MonthCalendar1.SelectionStart.Year
...
TextBox1.Text = "Pâques est le " & paques
___________________________________________________________

J'obtiens deux messages d'erreur:
1- Argument non spécifié pour le param "Annee" de Private Sub
FetesMobiles(Annee as integer)
2- Le nom "paques" n'est pas déclaré

A part ça, le progr tourne mais y a qd meme qqchose qui cloche !
Merci pour une correction .

alain





Avatar
alainL
Merci. J'avais transféré cela (function) dans un sub FetesMobiles car je
pensais pouvoir y calculer aussi les autres dates (pentecote etc...) Je
n'arrive pas à récupérer Lj et Lm en partant de paques dans mon sub
principal. et ce sont surtout ces deux valeurs qui m'intéressent !

Alain

"PierreSlideM" a écrit dans le
message de groupe de discussion :

Il faut modifier le code ainsi

Private Function FetesMobiles(ByVal Annee As Integer)
Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date
paques = (Lj & "/" & Lm & "/" & Annee)
Return paques
End Function

et

Dim Annee As Integer
Annee = MonthCalendar1.SelectionStart.Year
TextBox1.Text = "Pâques est le " & FetesMobiles (Annee)



"alainL" a écrit :

Le sub suivant me donne la date de Paques. (et plus tard, celles des
autres
fetes)
--------------------------------------------------------------------------------------------------------------
Private Sub FetesMobiles(ByVal Annee As Integer)

Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date


......................
paques = (Lj & "/" & Lm & "/" & Annee)

End Sub
______________________________________________________

Je l'appelle ds un autre sub :
--------------------------------------------------------------------------------------------------------
Private Sub Rafraichir()
...
Dim Annee As Integer

Annee = MonthCalendar1.SelectionStart.Year
...
TextBox1.Text = "Pâques est le " & paques
___________________________________________________________

J'obtiens deux messages d'erreur:
1- Argument non spécifié pour le param "Annee" de Private Sub
FetesMobiles(Annee as integer)
2- Le nom "paques" n'est pas déclaré

A part ça, le progr tourne mais y a qd meme qqchose qui cloche !
Merci pour une correction .

alain







Avatar
Patrice
Les variables sont locales à la procédure et ne sont donc connues que dans
celle ci.

Je conseille de lire au moins une fois la spécification du langage pour
comprendre comment tout cela fonctionne (ici c'est la "portée des variables"
qui 'il faut chercher).

Par exemple :
http://msdn2.microsoft.com/fr-fr/library/90h82b3x(VS.80).aspx pour la
"visite guidée"...

(je ne vois malheureusement qu'une spéc en anglais, il me semblait pourtant
qu'il en existait une en français).

Pour aller vite, ce qu'on fait généralement est de passer des paramètres à
la sub pour que celle ci puisse calculer et modifier ces valeurs qui sont
alors disponibles dans le programme principal...

"alainL" a écrit dans le message de news:
47547148$0$21144$
Merci. J'avais transféré cela (function) dans un sub FetesMobiles car je
pensais pouvoir y calculer aussi les autres dates (pentecote etc...) Je
n'arrive pas à récupérer Lj et Lm en partant de paques dans mon sub
principal. et ce sont surtout ces deux valeurs qui m'intéressent !

Alain

"PierreSlideM" a écrit dans le
message de groupe de discussion :

Il faut modifier le code ainsi

Private Function FetesMobiles(ByVal Annee As Integer)
Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date
paques = (Lj & "/" & Lm & "/" & Annee)
Return paques
End Function

et

Dim Annee As Integer
Annee = MonthCalendar1.SelectionStart.Year
TextBox1.Text = "Pâques est le " & FetesMobiles (Annee)



"alainL" a écrit :

Le sub suivant me donne la date de Paques. (et plus tard, celles des
autres
fetes)
--------------------------------------------------------------------------------------------------------------
Private Sub FetesMobiles(ByVal Annee As Integer)

Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date


......................
paques = (Lj & "/" & Lm & "/" & Annee)

End Sub
______________________________________________________

Je l'appelle ds un autre sub :
--------------------------------------------------------------------------------------------------------
Private Sub Rafraichir()
...
Dim Annee As Integer

Annee = MonthCalendar1.SelectionStart.Year
...
TextBox1.Text = "Pâques est le " & paques
___________________________________________________________

J'obtiens deux messages d'erreur:
1- Argument non spécifié pour le param "Annee" de Private Sub
FetesMobiles(Annee as integer)
2- Le nom "paques" n'est pas déclaré

A part ça, le progr tourne mais y a qd meme qqchose qui cloche !
Merci pour une correction .

alain









Avatar
alainL
"PierreSlideM" a écrit dans le
message de groupe de discussion :

Il faut modifier le code ainsi

Private Function FetesMobiles(ByVal Annee As Integer)
Dim L(6) As Long, Lj As Long, Lm As Long
Dim paques As Date
paques = (Lj & "/" & Lm & "/" & Annee)
Return paques
End Function

et

Dim Annee As Integer
Annee = MonthCalendar1.SelectionStart.Year
TextBox1.Text = "Pâques est le " & FetesMobiles (Annee)





Bonsoir, Je retrouve toujours la même erreur:
"Argument non spécifié pour le param "Annee" de Private Function
fPaques(Annee as Integer) as Date " dans ce bout de code:
_______________________________________________________________________________________________
Private Function fPaques(ByVal Annee As Integer) As Date

Dim L(6) As Long, Lj As Long, Lm As Long

L(1) = Annee Mod 19 : L(2) = Annee Mod 4 : L(3) = Annee Mod 7
L(4) = (19 * L(1) + 24) Mod 30
L(5) = ((2 * L(2)) + (4 * L(3)) + (6 * L(4)) + 5) Mod 7
L(6) = 21 + L(4) + L(5)

If L(6) > 31 Then
Lj = L(6) - 31
Lm = 4
Else
Lj = L(6)
Lm = 3
End If


fPaques = (Lj & "/" & Lm & "/" & Annee)

End Function
_________________________________________________________________________________
le sub appelant contient :

dim Annee as integer
Annee = MonthCalendar1.SelectionStart.Year
..........
TextBox1.Text = "Pâques sera le " & fPaques()
____________________________________________________________________________________________
Le pire est que ça marchait avant que j'essaie de remplacer Function par Sub
et maintenant que j'ai remis en l'état d'origine, ça ne va plus :-(((((((((
Avatar
alainL
"alainL" a écrit dans le message de groupe de
discussion : 4756e9d7$0$21145$



...........> Bonsoir, Je retrouve toujours la même erreur:
"Argument non spécifié pour le param "Annee" de Private Function
fPaques(Annee as Integer) as Date " dans ce bout de code:
_______________________________________________________________________________________________
Private Function fPaques(ByVal Annee As Integer) As Date



.........>
fPaques = (Lj & "/" & Lm & "/" & Annee)

End Function
_________________________________________________________________________________
le sub appelant contient :

dim Annee as integer
Annee = MonthCalendar1.SelectionStart.Year
..........
TextBox1.Text = "Pâques sera le " & fPaques()
____________________________________________________________________________________________



Je cherchais l'erreur ds le code de la fonction, elle était dans l'appel de
celle-ci 'fPaques(Annee)'

Bonne soirée
alain