https://bugs.kde.org/show_bug.cgi?id=524590
--- Comment #8 from [email protected] <[email protected]> --- quelle est la relation entre l'export csv et le fait qu'il y ait eu des parenthèses pour indiquer les nombres negatif au lien du signe moins L'explication réside dans **la manière dont les données sont transmises entre Skrooge et votre tableur (comme LibreOffice Calc ou Microsoft Excel)** via le fichier CSV. --- ### 1. Le rôle de `stringToCsv` Le format CSV est un fichier texte brut. Lorsque Skrooge exporte une valeur dans un champ CSV : * La fonction `stringToCsv` entoure la donnée de guillemets doubles (`"..."`). * Si la donnée contient elle-même un guillemet (ex: `10 "choses"`), la fonction doit l'échapper en le doublant (`10 ""choses""`). --- ### 2. Pourquoi le bogue provoquait l'apparition des parenthèses À cause de l'erreur dans l'ancien code : ```cpp output.replace('"', QStringLiteral("#SKGDOUBLECOTE#")); output.replace(QStringLiteral("#SKGDOUBLECOTE#"), QStringLiteral("\"\"")); ``` Chaque guillemet était remplacé **deux fois**, générant un surplus de guillemets indésirables dans le fichier CSV final. Lorsqu'un tableur (Excel, Calc) importe un champ texte comme : * **Un champ bien formé :** `"-123,45"` ➔ Le tableur comprend immédiatement qu'il s'agit du nombre négatif **`-123,45`**. * **Un champ altéré par des guillemets superflus :** `""""-123,45""""` ou une chaîne mal échappée ➔ Le tableur ne parvient plus à interpréter la cellule comme un nombre natif. --- ### 3. Comment le tableur interprétait la valeur Face à une chaîne de caractères mal formées ou mal échappée : 1. **Perte du format numérique :** Le tableur traite la valeur comme du texte brut ou applique un formatage régional de secours. 2. **Affichage comptable avec parenthèses :** Dans les conventions comptables (notamment anglo-saxonnes ou selon laL'utilisation de parenthèses à la place du signe moins — comme `(100)` au lieu de `-100` — provient des **conventions comptables anglo-saxonnes**. La relation avec l'export CSV se résume à un problème de **formatage du logiciel source** et de **traductions de types de données** lors de l'import/export : ### 1. La cause à la source (Logiciel d'origine) Lorsqu'un logiciel (ex. un ERP, un outil bancaire ou Excel) génère un fichier CSV, il exporte souvent la valeur telle qu'elle est affichée à l'écran si le format d'export n'est pas strictement configuré en « brut / numérique ». En comptabilité internationale, le format par défaut masque le signe `-` et entoure les négatifs de parenthèses pour éviter les erreurs de lecture. ### 2. L'impact dans le fichier CSV Le format CSV est un fichier **texte pur**. * Si le logiciel exporte la valeur sous forme `-100`, l'outil qui lira le CSV comprendra immédiatement qu'il s'agit d'un **nombre négatif**. * S'il exporte `(100)`, le CSV contient littéralement les caractères `(` et `)`. ### 3. La conséquence lors de la réimportation Lorsque tu rouvres ce fichier CSV dans un autre logiciel (comme Excel, Power BI ou une base de données) : * Le logiciel cible ne reconnaît pas toujours `(100)` comme un nombre. * Il le traite alors comme une **chaîne de caractères (texte)**. * **Résultat :** impossible de faire des sommes, des calculs ou des formules mathématiques sur ces valeurs sans les nettoyer au préalable. --- ### Comment résoudre ce problème ? * **À l'export :** dans l'application source, choisis un format d'export de type « Données brutes », « Texte non formulé » ou modifie le format des cellules pour utiliser le signe moins classique avant de lancer l'export. * **À la réception (sur Excel) :** si tu as déjà le fichier CSV, tu peux remplacer les parenthèses en convertissant la colonne, ou utiliser une formule pour transformer la chaîne textuelle en nombre négatif : `=SI(ESTTEXTE(A1); -1 * SUBSTITUTE(SUBSTITUTE(A1; "("; ""); ")"; ""); A1)` -- You are receiving this mail because: You are watching all bug changes.
