Erreur compilation ptite fonction vb
marina
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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
- Vb cable - Télécharger - Audio & Musique
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
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