Pour expliquer le contexte : ce fichier Excel sur lequel je travail sert à faire du suivi de production.
Les techniciens produisent / assemblent du matériel et, à l'aide d'une douchette USB, vont scanner les numéros de série pour remplir un fichier Excel. Ce fichier doit ensuite être converti en CSV pour être importé dans une base de donnée SQL.
Le fichier Excel dans lequel ils travaillent est donc pré-formaté avec notamment tout un tas de formules qui leur indique quelles cellules renseigner.
Les numéros de série ne sont donc pas tapés à la main, mais arrivent par le scan de la douchette.
Dans Excel, si on se met sur une cellule qui n'a jamais été mise en forme (format standard par défaut) et qu'on saisi la valeur : 123456789123456789, dès qu'on appuie sur Entrée, Excel change l'affichage : ça reste au format standard, mais il affiche 1,23457E+17.
C'est ce qui se passe quand on scan avec la douchette et que le numéro s'inscrit dans la cellule.
Par ailleurs, si on prends une cellule au format standard qui contient 1,23457E+17 et qu'on la passe au format texte, ça ne change rien : la valeur reste 1,23457E+17.
J'ai donc essayé en mettant la colonne au format texte d'abord, puis je scan un numéro de série : ça marche, le numéro s'affiche en entier et reste au format texte. Je pourrais donc me contenter de cette solution...sauf que je ne peux pas verrouiller le fichier, ce qui fait que n'importe quel technicien qui va s'en servir pourra changer les formats (même si il ne fait pas exprès !).
J'aurais donc voulu, par précaution, que ma macro prenne soin de remettre tous les numéros de série au bon format lors de la génération du CSV.