[PUBLIPOSTAGE WORD] Calcul sur champ date : afficher année + 1

Fermé
julolamayo Messages postés 5 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 3 août 2021 - 1 août 2021 à 07:08
brucine Messages postés 18317 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 décembre 2024 - 3 août 2021 à 09:25
Bonjour à tous,

Je travaille sur la fusion d'un document word à partir de champs issus d'un logiciel de gestion. Les tables ne sont donc absolument pas modifiables.
Le fichier word doit être chargé dans le logiciel, puis la fusion est réalisée sur un ordinateur distant commun, sur lequel word est installé. Le fichier fusionné obtenu localement est un fichier PDF.

Je tente d'obtenir sur mon document fusionné le calcul : "année + 1" avec la formule :

{ = 1 + { MERGEFIELD CER2_DATEH \@ "yyyy" \# 0000 } }

Je précise que :
- les crochets ont bien été créés avec Ctrl + F9,
- le champs date seul fonctionne, résultat de "{ MERGEFIELD CER2_DATEH \@ "yyyy" }" = "2021",
- un calcul sur des nombres seuls fonctionne également, par exemple "{ = 1 + 1 }" renvoie bien "2".

Je suppose que le problème est que word interprète le résultat de l'année comme du texte, d'où l'ajout de "\# 0000" qui semble ne pas être suffisant. Cela fait des heures que je tente en vain d'obtenir le résultat souhaité (afficher "2022"), merci de votre aide.

Configuration: Windows / Chrome 92.0.4515.107
A voir également:

3 réponses

brucine Messages postés 18317 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 décembre 2024 2 712
1 août 2021 à 09:35
Bonjour,

La chose est rapportée, selon les sources, comme n'étant pas fiable, très difficile voire impossible.

Un auteur prétend cependant avoir trouvé une formule:


{={MERGEFIELD "MADATE"\@d}} / {={MERGEFIELD "MADATE"\@MM}}/ {=10+{MERGEFIELD "MADATE"\@yyyy}}


A peu près tout le monde s'accorde à dire qu'il n'y a pas de solution saine hors macro, voir par exemple ici, datecalc.zip, tandis que d'autres préconisent des utilitaires tiers:
http://www.gmayor.com/downloads.htm
0
julolamayo Messages postés 5 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 3 août 2021
2 août 2021 à 07:19
Bonjour et merci pour votre réponse,

J'avais déjà consulter le document proposé , mais il n'indique pas de proposition de solution au problème que je rencontre.

En fait la formule
{ = { MERGEFIELD CER2_DATEH \@ "yyyy" } + 1 }
ne donne pas d'erreur, mais donne le résultat :
= 2021 + 1


Jul
0
brucine Messages postés 18317 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 décembre 2024 2 712 > julolamayo Messages postés 5 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 3 août 2021
2 août 2021 à 13:51
Bonjour,

Je ne suis pas sûr de comprendre la problématique de base: tu nous dis que la base de données est exportée vers Word ou dans un fichier pdf?
Dans la première hypothèse, on peut modifier les champs sur une copie et c'est ce qu'il y a de plus simple, dans la deuxième, l'export vers un fichier Excel ou Access n'est-il pas possible, là, on n'aurait plus de problème?

Les opérations dans un champ de fusion peuvent se révéler très compliquées pour un grand nombre de raisons: format américain par défaut, format texte, protocole de données..., voir par exemple ici:
https://faqword.com/index.php/word/19-publipostage/412-publipostage-decimales-dates-format-americain
Quand bien même le format serait une date que l'on risque que +1 additionne...un jour et ce qui ne changera rien à tes misères.

Sur les champs, et s'il y a moyen de faire un export modifiable, la solution est documentée:
http://download.faqword.com/index.php/word-exemples/divers/file/81-champ-calcul-date-pour-publipostage
https://www.faqword.com/index.php/word/140-outils-d-edition/681-comment-ajouter-ou-supprimer-un-an-a-la-date-du-jour.

Le fichier DateCalc.zip (mon lien précédent) et que j'ai téléchargé a, en tout cas chez moi, un comportement curieux, peut-être du au fait qu'il est réalisé avec une version de Word très ancienne: on a beau activer le mode de compatibilité et les macros qu'elles restent illisibles.

C'est de toute façon une méthode hasardeuse et compliquée, si elle ne fonctionne pas, il n'y a plus qu'à se retourner vers le VBA (et je n'y comprends rien).

Marina (et qui est elle-même MVP Office et qui donc a priori sait de quoi elle parle) n'a fait en la matière que s'inspirer du pape en la matière (Paul Edstein, alias Macropod, qui l'est aussi et de son complice Graham Mayor), le hic étant que son site historique est inaccessible, il faut essayer de voir ce qui en a été rapporté par d'autres.
0
julolamayo Messages postés 5 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 3 août 2021
2 août 2021 à 21:50
Bonjour et merci pour vos réponses,

Il s'agit d'un logiciel dans lequel on charge un modèle au format Word, et qui permet de compléter des documents administratifs automatiquement à partir de données entrées dans ce logiciel. On peut ensuite lancer l'impression, et la fusion ne s'effectue pas sur le poste, mais dans le logiciel. La donnée de sortie est donc un fichier pdf imprimable directement. Ce que je veux dire par là, c'est qu'il n'est pas possible d'effectuer quelque réglage que ce soit sur word, la fusion étant certainement réalisée sur un ordinateur distant par l'intermédiaire du logiciel. Les seules modifications que je puisse apporter sont dans le fichier word, uniquement.

Tous les champs fonctionnent parfaitement, par exemple dans le fichier word si je tape :
{ MERGEFIELD CER2_DATEH \@ "yyyy" \# 0000 }
,
j'obtiens bien :
2021


Si je tape :
{ = 1 + 1 }
,
j'obtiens bien :
2


Mais si je tape :
{ = 1 + { MERGEFIELD CER2_DATEH \@ "yyyy" \# 0000 } }
,
j'obtiens :
= 1 + 2021
, alors que je voudrais obtenir :
2022


Je viens de passer pas mal de temps à tester les formules proposées dans les différents liens que vous m'avez envoyés, mais rien ne fonctionne...
0
brucine Messages postés 18317 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 décembre 2024 2 712
3 août 2021 à 00:45
Tu l'as dit déjà.
Soit le calcul ne se fait pas, soit il est au mauvais format du fait de la fusion.
Si tu fais: { = 365 +
ça retourne quoi?
Si tu as 2022, c'est que ta fusion s'est faite au format jour, si tu as un résultat fantaisiste, c'est que le calcul fonctionne avec un mauvais format, si tu n'as rien, c'est que la fusion à partir de ton format de données non modifiable ne fournit pas un format de date ou numérique mais autre.
A cet égard, la syntaxe # 0000 s'adresse à un format numérique décimal, pas à un format de date, et il y a donc une antinomie à écrire à la fois "yyyy" et # 0000: on peut pour le test oublier ce commutateur (laisser la date en l'état) et recommencer { = 1 + et { = 365 + pour voir ce que ça raconte.

Si on n'arrive pas à déterminer le format exact de la fusion (si elle n'est ni numérique ni date, on a un problème) ou si elle est l'un ou l'autre mais qu'aucun calcul n'est possible dessus, je reviens à ce que j'ai dit, et où il faudra s'adresser à un autre que moi tant je n'y comprends rien: la solution la plus fiable est dite d'importer son champ de fusion brut de coffrage, puis de lui appliquer une macro VBA (adaptée au format importé...)
0
julolamayo Messages postés 5 Date d'inscription dimanche 1 août 2021 Statut Membre Dernière intervention 3 août 2021
3 août 2021 à 07:01
Bonjour et merci encore pour votre aide et votre suivi.

J'ai testé :

{ = 1 + {MERGEFIELD "CER2_DateH" \@ "yyyy" } }


Résultat :
= 1 + 2021


{ = 365 + {MERGEFIELD "CER2_DateH" \@ "yyyy" } }


Résultat :
= 365 + 2021
0
brucine Messages postés 18317 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 décembre 2024 2 712
3 août 2021 à 09:25
Bonjour,

Je suppose bien sûr que les champs ont été introduits correctement; on peut faire le même test avec une valeur non pas de date mais numérique, mais je crains que l'on arrive au même résultat.

Moralité, le champ importé n'est pas interprété comme une valeur numérique ou de date (c'est la même chose, ce n'est qu'un numéro de série).

Je ne sais pas quel est le logiciel de gestion utilisé; ici, on voit que l'export à partir d'une feuille externe (Sage, je ne sais pas si c'est propre au logiciel ou une syntaxe propre à l'export de pdf) utilise une syntaxe particulière (point d'exclamation).

On peut toujours essayer:
https://fairsailcustomersforlife.force.com/sagepeoplecustomercommunity/s/article/HCM-Forms-Using-Formulas-And-Merge-Fields

Edstein (déjà cité) tient cela comme impossible, ce qui signifierait en fait (puisque le champ "2021" est correctement retourné) que seuls des champs particuliers dépendant du logiciel d'origine pourraient être exportés, et sans qu'il soit possible de leur appliquer des "opérations mathématiques".

Si la sortie se fait au format texte, il est peut-être possible d'écrire une macro modifiant ce texte, mais ce sera bâtard, puisque l'on pourra par exemple remplacer 202(1) par 202(2), mais pas calculer.

Enfin, on pourrait exporter pdf vers doc, mais on ne peut pas à ma connaissance le faire offline avec des logiciels gratuits, devant se retourner vers des logiciels payants et coûteux comme Adobe Acrobat, et n'étant pas sûr de ne pas perdre au passage les champs du fichier d'origine.
0