Bonjour.
Oui c'est hélas normal. Ça n'apporte jamais rien, ce n'est qu'une source d'ennuis, mais c'est comme ça.
Il n'y a qu'un moyen de contourner ça: déclarer une variable globale Private ChangementInduit As Boolean.
La mettre à True avant de changer par VBA la valeur du contrôle, à False après, et au début de la procédure déclenchée à tort:
If ChangementInduit Then Exit Sub.
Pour les évènements Excel il y a Application.EnabeEvents qui peut être positionné à False pour que l'évènement ne soit pas décrété, mais pas pour les objets MSForms.