Bonjour le Fil,
En général ce problème survient lors d'export de données à partir d'autres applications vers un fichier au [soit-disant] format Excel et parfois lors l'import dans Excel de certains fichiers textes (txt, asc, csv, ...) en particulier lorsque tous les champs sont encadrés par des identificateurs de texte (quotte).
En complément des explications de Philippe (que je salue :coucou:),
on peut aussi l'utiliser lorsque les cellules contiennent des valeurs constantes (par opposition aux résultats de formules).
.Value = .Value est un pis-aller pour convertir un chiffre représentant un nombre entier, en nombre entier (ce qui est le cas de ce Fil):
- l'avantage c'est de pouvoir l'appliquer à une plage de cellules ;
- l'inconvénient, c'est que ça marche qu'avec certains format : Entier sans séparateur de milliers, certaines fractions et Heures minutes secondes ;
- le problème, c'est que ça supprime la virgule dans les nombres décimaux français (il prend la virgule pour un séparateur de milliers).
La bonne méthode pour transformer des chiffres français en nombre c'est :
.FormulaLocal = .Value
et pour les chiffres anglais :
.Formula = .Value
- l'avantage c'est que ça reconnaît automatiquement tous les formats de base (et certains formats personnalisés) comme le ferait Excel lors de la saisie.
- l'inconvénient c'est que ça ne s'applique qu'a une seule cellule à la fois, il faut donc faire une boucle.
Un fichier de démonstration : Pièce jointe 530906