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.

Reply via email to