Champ WORD - nombre tronqué

Fermé
Pierke - 14 oct. 2008 à 19:40
m@rina Messages postés 20443 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 30 juin 2024 - 14 oct. 2008 à 23:05
Bonjour,

Lorsque la valeur d'un champ WORD contient un nombre qui dépasse 13 caractères (par ex. numéro national ou carte ID), WORD ne respecte pas la mise en forme indiquée par le commutateur/image numériquele. Dès qu'il y a une commande avec commutateur numérique dans le champ, le nombre est l'arrondi visuellement à 13 chiffres en remplaçant le solde par des zéros.

Le problème se pose uniquement en utilisant un commutateur numérique, avec toutes les combinaisons de commutateurs numériques possibles, ou en passant par =formule, le problème reste toujours le même.

Exemple :

Valeur du champ = 569856974123647896 (donc, 18 caractères)

Si on veut que la valeur soit affichée comme suit : 569 856 974 123 647 896, la mise en forme du champ donnerait :

{REF valeur \# "### ### ### ### ### ##0" \* CHARFORMAT}

Or, dans ce cas, WORD affiche :

541 446 528 975 900 000 au lieu de 569 856 974 123 647 896
il "arrondi" le nombre à la 13ème position

Idem avec d'autres combinaisons :

{REF valeur \# "######_######_#####0" \* CHARFORMAT} donne 541446_528975_900000
ou {REF valeur \# "###.###.###.###.###.##0" \* CHARFORMAT} donne 541.446.528.975.900.000

La valeur à l'intérieur du champ n'est pas modifiée, mais il n'est pas possible de l'afficher correctement lorsqu'on veut le mettre en forme (pour la facilité de lecture p.ex.).

Je signale que la valeur est initialement saisie à l'aide de la commande ASK, puis restituée avec REF.

Merci pour votre aide.
A voir également:

4 réponses

m@rina Messages postés 20443 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 30 juin 2024 11 300
14 oct. 2008 à 20:34
Bonjour,

Word est nul en calcul... Mais bon, on peut toujours tenter... La nombre limite des chiffres est de 14. Voici ce que tu peux faire :

{ SET n1 {=INT(569856974123647896/1000000) }}
{ SET n2 {=MOD(569856974123647896;1000000)}}

{n1 \# "### ### ### ### ###"}{n2 \# "### ###"}

J'ai en fait décomposé le nombre en deux parties plus petites :
la première formule récupère le nombre entier divisé par 1000000
la seconde formule récupère ce qui reste de la division
et la troisième formule recolle le tout.

Si tu peux éviter de faire ça avec Word, ce serait mieux ! ;)

m@rina
1
Merci pour les explications. J'avais également songé à décomposer le nombre en plusieurs parties en passant par division/sous-traction, mais j'espérais trouver une solution plus simple.

Pour ce qui est du pourquoi utiliser WORD avec ce type de nombres, je ne vois pas d'alternatives vu que les données traitées doivent s'intégrer dans des contrat qui font jusqu'à 30 pages ... et que je me retrouve avec des nombres identificateurs comme carte ID, numéro national, codes EAN ou encore, le code de la poste (pour les recommandés).

Même en passant par une base de données externe (Access ou SQL) le problème reste le même : WORD ne pouvant visiblement pas traiter des nombres plus grand que 14 positions, je ne vois pas comment résoudre le problème de façon élégante.

Sauf si vous avez des idées ... ?

Comment feriez-vous ?
0
taz067 Messages postés 737 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 20 avril 2017 193
14 oct. 2008 à 19:44
tu est sur que tu utilise bien word pour ça ??????
-1
m@rina Messages postés 20443 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 30 juin 2024 11 300
14 oct. 2008 à 23:05
Bonsoir,

Le conseil que je donne en général pour pallier ce problème est de modifier la base de données...
Mais si ce n'est vraiment pas possible, il n'y a pas d'autres solutions que celle que je t'ai donnée. C'est un truc par exemple que je donne pour le numéro de sécu qui a 15 chiffres, et ça fonctionne bien.
Avec Word, on ne peut pas, comme avec Excel, extraire des morceaux de champs...

m@rina
-1