Bonjour,
Moi (vu que nous en exécution normale on n'a aucun problème) je pense que c'est plutôt lié à l'hyperlink et/ou à un problème d'exécution asynchrone :
Essaie de glisser un DoEvents
juste avant le Application.ScreenUpdating = True
...
Next Ws
DoEvents
Application.ScreenUpdating = True
...
Par ailleurs je ne suis pas trop d'accord avec mon ami Ferrand : Le traitement en dernier de
Sheets("Accueil")
.Visible = xlSheetVeryHidden
se justifie par le fait que on ne peut masquer toutes les feuilles en même temps :
Vu que toutes autres feuilles sont déjà masquées, si par un malheureux hasard dans le :
For Each Ws In ThisWorkbook.Worksheets
on passe d'abord dans le Select Case "Accueil", ça revient à masquer toutes les feuilles et là VBA va couiner... Ça ne veux pas dire que le Select Case est à jeter... Mais il faut en exclure Accueil et ne traiter "Accueil" quand on est sur qu'au moins une feuille est visible...
Bon en apparence, c'est pas bien grave, (car tu aurais un autre message d'erreur) mais selon la loi de Murphy, il vaut mieux éviter !
Enfin je suis un peu dubitatif avec le :
Ws.Protect Password:="mdp"
car je n'ai pas vu de .Unprotect dans le Before_Close...
Bref, tout ceci illustre un peu toutes les difficultés qu'on a tester une situation avec des indices fragmentaires, au compte-goutte, hétéroclites...
A+