IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Mergefield - comparaison de date


Sujet :

Word

  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut Mergefield - comparaison de date
    Bonjour,

    J'ai un document Word 2003 dans lequel j'ai des champ de publipostage. Je souhaiterai faire une condition particulière, mais je ne sais pas comment l'écrire.
    J'ai un champ datedebut et un champ datefin. Je souhaiterai faire ceci :
    Si datedebut > date du jour < date de fin => alors j'affiche un texte dédié
    sinon j'affiche un autre texte.

    Avez-vous une idée ?


  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,


    Je suppose que c'est
    Date de début < Date du jour < date de fin

    Il faut plusieurs conditions imbriquées.

    Ctrl + F9 pour insérer un champ, il est matérialisé par deux {} qui ne sont pas de simples crochets.

    La syntaxe est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { If {MergeFields Début} < {Date}  "Valeur si vrai" "Valeur si faux"}
    Les valeurs si vrai ou faux peuvent à leur tour être remplacées par des champs.
    Il n'y a pas de limite à cette imbrication, mais plus il y en a, plus la gestion est complexe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { If {MergeFields Début} < {Date}  {If {Date} < {MergeFields Fin} "Valeur si vrai" "Valeur si faux"} "Valeur si faux"}
    Dans ce dernier exemple, si le premier test est vrai, on remplace la valeur renvoyée par une autre condition.

    http://heureuxoli.developpez.com/office/word/champs/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Ma date début = 01/06/2012
    Ma date fin = 31/12/9999
    Date courant = 26/01/2015
    et mon, résultat est erroné

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {MergeFields Début} => 01/06/2012
    {MergeFields Fin} => 31/12/9999
    {DATE \* MERGEFORMAT} => 26/01/2015
     
    { If {MergeFields Début} < {DATE \* MERGEFORMAT}  {If {DATE \* MERGEFORMAT} < {MergeFields Fin} "OK" "APRES"} "AVANT"}
    Résultat: APRES au lieu de OK

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    J'ai fait quelques tests.
    J'obtiens le même résultat, Word cafouille un peu avec les dates.

    Une solution viable est de mettre un masque sur les date pour les tester.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {MergeFields Début \@ yyyyMMdd }
    On convertit alors la date en nombre et on peut les comparer.

    Pour la date d'aujourd'hui, on obtient 20150126.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Merci pour ta réponse, mais toujours un résultat erroné. Surement du au fait que les champs {MergeFields Début \@ yyyyMMdd } me rendent toujours une date de type jj/mm/aaaa alors que {Date \@ yyyyMMdd } fonctionne.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour le fait que le champ de publipostage ne soit pas formaté, je n'ai pas de réponse.
    LE mettre dans un signet n'est pas une bonne idée, les signets ne sont pas propagés dans un publipostage.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Pour le fait que le champ de publipostage ne soit pas formaté, je n'ai pas de réponse.
    C'est fou comme le fait d'être dépendant d'un logiciel de m*** me pose des soucis. Il n'y a pas moyen de splitter comme dans tout langage de programmation ? Histoire de convertir jj/mm/aaaa en aaaammjj pour effectuer la comparaison ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si tu peux coder, c'est possible d'ajouter un format à une date pour l'avoir sous une forme différente, mais il faut m'en dire un peu plus sur ce que tu faire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Toujours la même chose .

    Mon but est de comparer les dates pour afficher le texte adéquat. Vu que la valeur des champs ci-dessus n'est pas au format date, je cherche une parade pour réussir à comparer mes dates vu que {xxxxxx \@ yyyyMMdd } ne fonctionne pas sur ma valeur de champ.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    on peut toujours tenter de le faire sur l'Event BeforeMailMerge.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
     
    Public WithEvents App As Word.Application
     
    Sub Document_Open()
    Set App = Word.Application
     
    End Sub
    '---------------------------------
     
     
    Private Sub App_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean)
     
    End Sub
    Et dans ce cas, tu peux faire ton test et affecter une valeur à ton enregistrement.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo