Création de procédures récursives
Les procédures disposent d’un espace limité pour les variables. Chaque fois qu’une procédure s’appelle elle-même, de l’espace est employé. Une procédure qui s’appelle elle-même est qualifiée de procédure récursive. Ce type de procédure répétée de façon continue peut provoquer une erreur. Par exemple :
Function RunOut(Maximum)
RunOut = RunOut(Maximum)
End Function
Cette erreur peut être moins évidente lorsque deux procédures s’appellent mutuellement indéfiniment, ou lorsqu’une condition limitant la récursivité n’est jamais satisfaite. Il convient parfois néanmoins d’avoir recours à la récursivité. Par exemple, la procédure suivante utilise une fonction récursive pour calculer les factorielles.
Function Factorial (N)
If N <= 1 Then ' Reached end of recursive calls.
Factorial = 1 ' (N = 0) so climb back out of calls.
Else ' Call Factorial again if N > 0.
Factorial = Factorial(N - 1) * N
End If
End Function
Vous avez intérêt à tester vos procédures récursives pour vous assurer que le nombre d’appels récursifs n’épuise pas vos ressources mémoire. Si une erreur se produit, assurez-vous que votre procédure ne s’appelle pas elle-même indéfiniment. Essayez ensuite d’économiser vos ressources mémoire en procédant comme suit :
- Supprimez les variables superflues.
- Utilisez des types de données autres que Variant.
- Réévaluez la logique de la procédure. Les procédures récursives peuvent souvent être remplacées par des boucles imbriquées.
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.