Erreur compilation ptite fonction vb
marina
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
quelqu'un pourrait il me dire pq cette fonction tirée de la correction d'un livre ne compile pas svp :
Function lePlusGrandDes3(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
If x > y Then
lePlusGrandDes3 = lePlusGrandDes3(x, z)
Else
lePlusGrandDes3 = lePlusGrandDes3(y, z)
End If
End Function
J'ai le message d'erreur argument non facultatif , je ne comprends pas...
merci de votre aide .
quelqu'un pourrait il me dire pq cette fonction tirée de la correction d'un livre ne compile pas svp :
Function lePlusGrandDes3(ByVal x As Long, ByVal y As Long, ByVal z As Long) As Long
If x > y Then
lePlusGrandDes3 = lePlusGrandDes3(x, z)
Else
lePlusGrandDes3 = lePlusGrandDes3(y, z)
End If
End Function
J'ai le message d'erreur argument non facultatif , je ne comprends pas...
merci de votre aide .
A voir également:
- Erreur compilation ptite fonction vb
- Fonction si et - Guide
- Vb - Télécharger - Langages
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
1 réponse
Bonjour,
Je ne pratique pas VB mais VBA, il y aura peut-être des petites différences.
Je dirais déjà que z doit être optionnel car tu l'appelles ensuite avec 2 parametres donc:
..., Optional ByVal z As Long) As Long
D'autre part ta fonction est récursive (elle s'appelle elle même) et il n'y a pas de condition de sortie.
Ex avec (5,8,2)
If 5 > 8 Then ' faux
lePlusGrandDes3 = lePlusGrandDes3(x, z)
Else
lePlusGrandDes3 = lePlusGrandDes3(y, z) 'ce test là est positif
donc appel suivant avec (8,2)
If 8 > 2 Then ' vrai
lePlusGrandDes3 = lePlusGrandDes3(x, z) ' et tu appelles à nouveau ta fonction
Je pense que tu dois tester l'absence du parametre z optionnel (de tete je ne sais sais plus comment) et dans ce cas sortir avec:
if x > y
lePlusGrandDes3 = x
else
lePlusGrandDes3 = y
endif
eric
Je ne pratique pas VB mais VBA, il y aura peut-être des petites différences.
Je dirais déjà que z doit être optionnel car tu l'appelles ensuite avec 2 parametres donc:
..., Optional ByVal z As Long) As Long
D'autre part ta fonction est récursive (elle s'appelle elle même) et il n'y a pas de condition de sortie.
Ex avec (5,8,2)
If 5 > 8 Then ' faux
lePlusGrandDes3 = lePlusGrandDes3(x, z)
Else
lePlusGrandDes3 = lePlusGrandDes3(y, z) 'ce test là est positif
donc appel suivant avec (8,2)
If 8 > 2 Then ' vrai
lePlusGrandDes3 = lePlusGrandDes3(x, z) ' et tu appelles à nouveau ta fonction
Je pense que tu dois tester l'absence du parametre z optionnel (de tete je ne sais sais plus comment) et dans ce cas sortir avec:
if x > y
lePlusGrandDes3 = x
else
lePlusGrandDes3 = y
endif
eric