Word XP - Fusion : Date au format américain
Résolu/Fermé
A voir également:
- Date américaine publipostage
- Espace insécable word - Guide
- Supprimer une page word - Guide
- Organigramme word - Guide
- Symbole attention word ✓ - Forum Word
- Suivi des modifications word - Guide
12 mars 2009 à 16:02
J'ai une base Access 97 (et oui c'est vieux) avec un ensemble de documents de fusion publipostage Word.
Je rencontre régulièrement des problèmes de conversion de dates et généralement, les options de mise en forme des champs dans word suffisent (\@ "DD/MM/YYYY" \* MERGEFORMAT).
Mais mon problème d'aujourd'hui ne pouvais pas être résolu par cette parade. J'avais rajouté des champs date calculés et le formattage n'était jamais cohérent avec les champs date non calculés.
Voici donc une astuce qui je pense règle définitivement les problèmes de dates.
Dans un document de fusion, j'avais 2 champs date provenant d'une requete Access.
Le 1er champ est une colonne de type date provenant d'une table. Le 2nd champ est calculé à partir du 1er auquel j'ajoute 1 an ou 3 ans selon une condition (donc calcul avec test conditionnel iif et manipulation de date avec dateadd).
Dans Access, si je visualise le résultat de cette requete, les deux champs sont formatés correctement en date avec le même format (jj/mm/aaaa). Comme j'utilise ces deux champs de date dans une autre requete en appliquant dessus des tests et des manipulations de date (datepart, dateadd, between), je sais que ces champs date sont valide au niveau access.
En revanche, quand je passe dans word, le 1er champ arrive en format date US (le coup classique, donc j'applique la mise en forme \@ "DD\MM\YYYY) mais le 2nd champ arrive soit en format "francais" quand le jour est <= à 12, soit en format US si le jour est > à 12 (??? je pense que word doit contenir du code de système expert...).
Après avoir essayé de nombreuses solutions (par ex, uniformiser le formattage de tous les champs dans la requete access), soit çà cassait mes autres requetes access, soit la fusion word échouait. J'ai trouvé une solution subtile mais pas élégante : Formatter les champs date en "jj/mmm/aaaa" et non en "jj/mm/aaaa".
J'obtiens des champs date de type 01/fevr/2009 au lieu de 01/02/2009... Ca ne casse plus mes applications Access car ca reste une date (tri, formattage, opérations de manip) et ca force Word a ne pas convertir les dates selon des critères obscurs (genre : jour inférieur ou égal à 12, c'est peut être pas un jour mais un mois donc je convertis en US... )
C'est un peu pourri mais c'est la seule solution que j'ai trouvé pour préserver les requetes, les opérations de comparaison et manip de date, les formulaires et états existants et la fusion dans word.
Le code SQL Access obtenu pour fabriquer ce champ est :
SELECT date_debut, Format(iif([renouvellement]="triennal",DateAdd("yyyy",3,[date_debut]),DateAdd("yyyy",1,[date_debut])),"dd/mmm/yyyy") AS DATE_FIN FROM .... WHERE ...
Merci de vos éventuels commentaires.
Hope That'll Help
JP Bret
13 sept. 2011 à 11:57