Erreur compilation ptite fonction vb

Fermé
marina - 14 nov. 2007 à 21:06
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 15 nov. 2007 à 07:59
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 .
A voir également:

1 réponse

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 256
15 nov. 2007 à 07:59
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
0