Partager via


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.