Bonjour,
Je vais vous exposer un problème qui a pris beaucoup de temps à être identifié et pour lequel je n'ai malheureusement pas encore de solution informatique ...
J'ai un fichier Excel FRANÇAIS qui contient des formules dont certaines utilisent la fonction BDLIRE (DGET pour les utilisateurs d'une version anglaise)
Avec POI j'ouvre le workbook, je remplis le formulaire puis lorsque je tente d'évaluer la cellule qui contient la fonction il me retourne CELL_TYPE_ERROR (j'ai d'ailleurs #VALEUR! dans Excel si je sauvegarde mon document dans un fichier)
Dans la formule j'ai : =BDLIRE(D3 : F5; A1; D3 : D5)
A1 est une cellule texte dont on recherche la valeur dans des données numériques
Les cellules D3:F4 ont de données numériques comme ceci:
Avec des entiers tout va bien.
1,5 2,5 ... 10 20 ...
Dans Excel tout va bien.
Dans POI le problème vient en fait de la différence de formatage des nombres en chaîne lors de l'évaluation de la fonction car 1.5 (valeur de la cellule D3) est différent de "1,5" (valeur de la cellule A1) car soit :
+ il transforme les données numériques en chaîne et compare "1.5" avec "1,5"
+ il transforme les données texte en nombre et n'arrive pas à avoir une valeur pour "1,5" qui n'est pas un nombre correct en anglais.
Potentiellement d'autres formules ne fonctionnent pas pour la même raison.
Je n'ai pas trouvé comment forcer POI à faire les conversions dans une locale définie (celle utilisée dans la version du fichier Excel par exemple)
Pour le moment ma seule façon de contourner le problème est de reprendre toutes les cellules (comme A1) et de m'assurer que les données sont bien numériques et pas textes...![]()
Partager