Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec le séparateur de milliers

4 réponses
Avatar
Denis
Bonjour,

Quand je veux trier des nombres dans un tableau dans l'ordre croissant ou
décroissant en utilisant le séparateur de milliers (format(MesNombres,
"##,##0.00 €")), le résultat est faux.
Ex : je veux trier dans l'orde croissant 1 817,00 € , 235,00 € et 890,00 €,
il m'affiche 1 817,00 €, 235,00 € et 890,00 € (en fait il ne retient que le 1
de 1 817 et considère donc que c'est le plus petit nombre).
Par contre si je n'utilise pas le séparateur de millier, le résultat est
correct.
Je n'ai constaté ce problème qu'hier et je ne peux pas dire si ça vient de
Windows XP ou de l'installation du SP2 mais je peux dire qu'avant XP, j'avais
Millenium et ça marchait très bien.
Si quelqu'un à la réponse à ce mystère...
Merci d'avance

4 réponses

Avatar
Patrice Henrio
Non, il considère que ce sont des chaînes de caractères et les trie selon
l'ordre lexicographique (comme les mots d'un dictionnaire), ainsi tu
remarqueras que 1 817,00 ? sera avant 182,00 ?
Il faut définir le format des cellules en monétaire pour que cela marche.
La fonction format transforme des nombres en chaïne (c'est un format
d'écriture).
"Denis" a écrit dans le message de news:

Bonjour,

Quand je veux trier des nombres dans un tableau dans l'ordre croissant ou
décroissant en utilisant le séparateur de milliers (format(MesNombres,
"##,##0.00 ?")), le résultat est faux.
Ex : je veux trier dans l'orde croissant 1 817,00 ? , 235,00 ? et 890,00
?,
il m'affiche 1 817,00 ?, 235,00 ? et 890,00 ? (en fait il ne retient que
le 1
de 1 817 et considère donc que c'est le plus petit nombre).
Par contre si je n'utilise pas le séparateur de millier, le résultat est
correct.
Je n'ai constaté ce problème qu'hier et je ne peux pas dire si ça vient de
Windows XP ou de l'installation du SP2 mais je peux dire qu'avant XP,
j'avais
Millenium et ça marchait très bien.
Si quelqu'un à la réponse à ce mystère...
Merci d'avance


Avatar
Denis
Et tu fais comment pour définir le format des cellules en monétaire ?
Je rempli le flexgrid avec des données écrites dans un fichier.
Ces données sont déjà formatées, les euros je les défini en currency pour
les écrire dans le fichier donc après quand je les relis pour les faire
afficher dans le flexgrid, ce sont bien des données monétaires, non ?

"Patrice Henrio" a écrit :

Non, il considère que ce sont des chaînes de caractères et les trie selon
l'ordre lexicographique (comme les mots d'un dictionnaire), ainsi tu
remarqueras que 1 817,00 ? sera avant 182,00 ?
Il faut définir le format des cellules en monétaire pour que cela marche.
La fonction format transforme des nombres en chaïne (c'est un format
d'écriture).
"Denis" a écrit dans le message de news:

> Bonjour,
>
> Quand je veux trier des nombres dans un tableau dans l'ordre croissant ou
> décroissant en utilisant le séparateur de milliers (format(MesNombres,
> "##,##0.00 ?")), le résultat est faux.
> Ex : je veux trier dans l'orde croissant 1 817,00 ? , 235,00 ? et 890,00
> ?,
> il m'affiche 1 817,00 ?, 235,00 ? et 890,00 ? (en fait il ne retient que
> le 1
> de 1 817 et considère donc que c'est le plus petit nombre).
> Par contre si je n'utilise pas le séparateur de millier, le résultat est
> correct.
> Je n'ai constaté ce problème qu'hier et je ne peux pas dire si ça vient de
> Windows XP ou de l'installation du SP2 mais je peux dire qu'avant XP,
> j'avais
> Millenium et ça marchait très bien.
> Si quelqu'un à la réponse à ce mystère...
> Merci d'avance





Avatar
Patrice Henrio
Malheureusement pas nécessairement et j'ai eu souvent le problème avec Excel
Le plus souvent je devais rajouter une colonne contenant la formule
Val(LC(-1))
Parfois je m'aperçois que les données sont écrites sous la forme '1253 au
lieu de 1253 ce qui transforme le nombre en chaîne.
de plus il se peut que le séparateur décimal ne soit pas compatible et
transforme les valeurs numériques en chaîne ... etc
Tout ce que je peux te dire c'est que visiblement dans ton exemple, Excell
ne trie pas dans l'ordre naturel mais dans l'ordre lexicographique.
0 = a
1 = b
2 = c
3 = d
5 = e
7 = f
8 = g
9 = h

1817 = "bgbf"
235 = "cde"
890 = "gha"

Dans le dictionnaire on aura "bgbf" avant "cde" avant "gha"
soit 1817 < 235 < 890

"Denis" a écrit dans le message de news:

Et tu fais comment pour définir le format des cellules en monétaire ?
Je rempli le flexgrid avec des données écrites dans un fichier.
Ces données sont déjà formatées, les euros je les défini en currency pour
les écrire dans le fichier donc après quand je les relis pour les faire
afficher dans le flexgrid, ce sont bien des données monétaires, non ?

"Patrice Henrio" a écrit :

Non, il considère que ce sont des chaînes de caractères et les trie selon
l'ordre lexicographique (comme les mots d'un dictionnaire), ainsi tu
remarqueras que 1 817,00 ? sera avant 182,00 ?
Il faut définir le format des cellules en monétaire pour que cela marche.
La fonction format transforme des nombres en chaïne (c'est un format
d'écriture).
"Denis" a écrit dans le message de
news:

> Bonjour,
>
> Quand je veux trier des nombres dans un tableau dans l'ordre croissant
> ou
> décroissant en utilisant le séparateur de milliers (format(MesNombres,
> "##,##0.00 ?")), le résultat est faux.
> Ex : je veux trier dans l'orde croissant 1 817,00 ? , 235,00 ? et
> 890,00
> ?,
> il m'affiche 1 817,00 ?, 235,00 ? et 890,00 ? (en fait il ne retient
> que
> le 1
> de 1 817 et considère donc que c'est le plus petit nombre).
> Par contre si je n'utilise pas le séparateur de millier, le résultat
> est
> correct.
> Je n'ai constaté ce problème qu'hier et je ne peux pas dire si ça vient
> de
> Windows XP ou de l'installation du SP2 mais je peux dire qu'avant XP,
> j'avais
> Millenium et ça marchait très bien.
> Si quelqu'un à la réponse à ce mystère...
> Merci d'avance







Avatar
Denis
Donc si j'ai bien compris, c'est quand mes nombres sont écrits dans le
flexgrid qu'ils sont transformés en chaine de caractères.
Pour m'en rendre compte faudrait que j'essaie d'additionner les nombres
d'une colonne pour voir le total de cette addition. Si mes nombres sont
transformés en chaine j'aurai comme total "1 817235890"
Actuellement mon total est juste que ce soit avec le séparateur de milliers
ou sans car je n'additionne pas les cellules du tableau mais les nombres
contenus dans le fichier au fur et à mesure qu'ils sont lus et j'écris le
total dans le tableau.
Je crois que je vais me passer du séparateur de milliers puisque ça marche
sans.
En tout cas merci pour ton aide

"Patrice Henrio" a écrit :

Malheureusement pas nécessairement et j'ai eu souvent le problème avec Excel
Le plus souvent je devais rajouter une colonne contenant la formule
Val(LC(-1))
Parfois je m'aperçois que les données sont écrites sous la forme '1253 au
lieu de 1253 ce qui transforme le nombre en chaîne.
de plus il se peut que le séparateur décimal ne soit pas compatible et
transforme les valeurs numériques en chaîne ... etc
Tout ce que je peux te dire c'est que visiblement dans ton exemple, Excell
ne trie pas dans l'ordre naturel mais dans l'ordre lexicographique.
0 = a
1 = b
2 = c
3 = d
5 = e
7 = f
8 = g
9 = h

1817 = "bgbf"
235 = "cde"
890 = "gha"

Dans le dictionnaire on aura "bgbf" avant "cde" avant "gha"
soit 1817 < 235 < 890

"Denis" a écrit dans le message de news:

> Et tu fais comment pour définir le format des cellules en monétaire ?
> Je rempli le flexgrid avec des données écrites dans un fichier.
> Ces données sont déjà formatées, les euros je les défini en currency pour
> les écrire dans le fichier donc après quand je les relis pour les faire
> afficher dans le flexgrid, ce sont bien des données monétaires, non ?
>
> "Patrice Henrio" a écrit :
>
>> Non, il considère que ce sont des chaînes de caractères et les trie selon
>> l'ordre lexicographique (comme les mots d'un dictionnaire), ainsi tu
>> remarqueras que 1 817,00 ? sera avant 182,00 ?
>> Il faut définir le format des cellules en monétaire pour que cela marche.
>> La fonction format transforme des nombres en chaïne (c'est un format
>> d'écriture).
>> "Denis" a écrit dans le message de
>> news:
>>
>> > Bonjour,
>> >
>> > Quand je veux trier des nombres dans un tableau dans l'ordre croissant
>> > ou
>> > décroissant en utilisant le séparateur de milliers (format(MesNombres,
>> > "##,##0.00 ?")), le résultat est faux.
>> > Ex : je veux trier dans l'orde croissant 1 817,00 ? , 235,00 ? et
>> > 890,00
>> > ?,
>> > il m'affiche 1 817,00 ?, 235,00 ? et 890,00 ? (en fait il ne retient
>> > que
>> > le 1
>> > de 1 817 et considère donc que c'est le plus petit nombre).
>> > Par contre si je n'utilise pas le séparateur de millier, le résultat
>> > est
>> > correct.
>> > Je n'ai constaté ce problème qu'hier et je ne peux pas dire si ça vient
>> > de
>> > Windows XP ou de l'installation du SP2 mais je peux dire qu'avant XP,
>> > j'avais
>> > Millenium et ça marchait très bien.
>> > Si quelqu'un à la réponse à ce mystère...
>> > Merci d'avance
>>
>>
>>