Bonjour,
En fait ici cela ne sert à rien car si l'instruction Find ne trouve rien, la variable Trouve vaut "Nothing" et cette possibilité est gérée par une instruction "If"
Mais sinon le principe de l'arrêt de la gestion des erreurs est celui-ci :
Si vous pensez qu'une instruction va générer une erreur et que vous ne voulez pas que cela arrête le déroulement de la macro, alors au plus près de l'endroit du code où l'erreur peut se produire vous mettez :
On Error Resume Next
qui demande à VBA de continuer à "lire" le code malgré l'erreur.
Juste après la ligne où l'erreur pourrait se produire, vous réactivez la gestion des erreurs avec l'instruction :
On Error GoTo 0
Un exemple : vous avez une macro pour créer une nouvelle feuille de classeur, or vous voulez vérifier si le nom de cette feuille existe déjà. Vous pouvez tester le nom de chaque feuille existante avec le nom de la nouvelle, mais une technique avec la gestion des erreurs est "plus" rapide :
Nouveau_nom = le nom de la feuille que l'utilisateur veut créer
Dim wSheet As Worksheet
On Error Resume Next ' arrêt de la "gestion des erreurs" par VBA
Set wSheet = Sheets(Nouveau_nom) ' si la feuille "Nouveau_nom" n'existe pas alors il y a une erreur de type '9' l'indice n'appartient pas à la sélection donc sans l'instruction "on error resume next" il y aurrait arrêt du code
' dans notre cas il n'y a pas d'arrêt donc on continue
If wSheet Is Nothing ' si la feuille n'existe pas alors wSheet vaut rien, c'est là qu'on gère par nous même l'erreur du dessus
' code pour créer la feuille puisqu'elle n'existe pas
Else ' sinon
' code de message demandant de changer de nom car elle existe déjà
End If
On Error GoTo 0 ' on remet en marche la gestion des erreurs par VBA
Set wSheet = Nothing ' on vide la variable "feuille"
Ce système de gestion d'erreur est plus rapide que le teste feuille à feuille avec une boucle, surtout s'il y a beaucoup de feuille à tester !
Cette façon de faire est une nouvelle branche de la façon de concevoir ses codes....
@ bientôt
LouReeD