Explications demandées :
Sub Evenemetn()
Application.EnableEvents = True
End Sub
Cette macro ne sert plus à rien et tu peux la supprimer. Elle m’a servi lorsque j’ai testé la macro Worksheet_Change(…)
Tu as dû voir que celle-ci commence par l’instruction :
Application.EnableEvents = False
ce qui a pour effet de désactiver le lancement d’une autre macro événementielle indésirable et inattendue au cours de l’exécution de celle en cours.
Juste avant la fin de cette macro, il ne faut pas oublier de les réactiver avec :
Application.EnableEvents = true
Or, quand on met au point une macro il est fréquent qu’elle s’arrête avant la fin : bug, point d’arrêt pour voir la valeur prise par une variable…
Et donc, si l’instruction '' Application.EnableEvents = true'' n’a pas été lue, impossible de lancer la macro quand on valide une cellule. Il n’y a plus qu’à fermer Excel et le réouvrir … ou de lancer ce bout de macro en cliquant entre son Sub en End et en actionnant F8 plusieurs fois !
Pour les 3 cas (Abandonner, Réessayer, ...), on a presque le même code :
Presque en effet mais pas tout à fait :
Case vbAbort
Application.Undo
GoTo Fin
Avant d’aller à fin, la macro annule la dernière instruction exécutée sur la feuille, ce qui a pour effet de retourner le curseur sur la cellule qui était active avant la validation et de remettre dans cette cellule sa valeur initiale.
Case vbRetry
MsgBox "Saisissez une nouvelle valeur"
Application.Undo
GoTo Fin
Là, c’est pareil mais comme on a cliqué sur le bouton ‘’Recommencer’’, on invite l’utilisateur à le faire.
Case vbIgnore
GoTo Fin
Dans ce dernier cas, on ne fait rien c’est-à-dire qu’on laisse la macro suivre son cours et valider la nouvelle valeur.
Dans les 3 cas, on va à fin car les instructions trouvées à cette adresse sont valables pour les 3
- A quoi correspondent "Chr(13)", et ", 20)"
Chr(13)" est utilisé dans le texte d’un message d’un Msgbox pour aller à la ligne.
Quant au 20 il est l’équivalent de ‘’vbYesNo’’ (qui vaut 4) + ’’vbCritical’’ (qui vaut 16)
OK ?
Bye !