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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour