La réponse courte à votre première question est "vous ne devrait pas mettre un gestionnaire d'erreur dans chaque procédure". Dire que "chaque procédure doit avoir un gestionnaire d'erreurs" est en général un conseil terrible. Les failles avec la gestion des erreurs VBA ont été beaucoup discutées ailleurs. Conceptuellement, cependant, ce n'est pas si différent de la forme plus standard de gestion des exceptions trouvée dans d'autres langues. La plupart des meilleures pratiques de ces langues s'appliquent. Vous devriez gérer les erreurs au niveau le plus bas où leur manipulation est logique. Parfois, c'est dans la procédure où l'erreur s'est produite, plusieurs fois non. Par exemple, un UDF VBA appelé à partir de votre feuille de calcul doit certainement avoir un EH qui vous assure de renvoyer une valeur d'erreur Excel à la ou les cellules appelantes au lieu de déposer votre utilisateur dans l'éditeur de code avec un message d'erreur. Cependant, le code que vous appelez à partir de ce fichier UDF peut ou non en avoir besoin. En fait, la chose la plus importante qu'une routine interne puisse faire lorsqu'une erreur se produit est souvent de la laisser passer dans la pile pour qu'elle puisse atteindre le code qui sait quoi faire avec. Cela dépend vraiment de la routine.
La réponse à votre deuxième question est que l'auteur ne semble pas très bien comprendre la gestion des exceptions.Il admet que la gestion des erreurs est spécifique au contexte, mais semble suggérer que chaque procédure devrait décider entre "corriger le problème ici et reprendre l'exécution" et "terminer le programme". Il laisse de côté l'option habituellement correcte, qui consiste à «nettoyer localement et lancer le problème à l'étage». Ainsi, les routines qui n'ont pas besoin d'être nettoyées localement devraient simplement laisser les erreurs «exploser».
-1 Veuillez ne pas utiliser d'URL raccourcies. Personne n'aime suivre les liens aveugles au travail. (+1 disponible sur le lien direct.) – Oorang