La raison c'est que la virgule est un caractère de séparation décimale issu des paramètres de langue.
Ce n'est pas un choix de l'utilisateur qui obtient une virgule quand il tape le point au clavier numérique.
En VBA quoi qu'il arrive, le séparateur décimal est le point (séparateur anglo-saxon).
Au départ la cellule contient une chaine de caractères car 123.45 en français n'est pas un nombre.
Pourquoi ? Ça vient de la manière dont ont été valorisées les cellules. Je ne sais pas comment.
Cellule.Value = Cellule.Value ?
En affectant une valeur chaine contenant des chiffres et un point dans la cellule, VBA reconnait une valeur numérique décimale et va la convertir en nombre décimal qui sera ré-affecté à la cellule qui verra alors...