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 :

Fonction MOD imbriquée dans une formule IF


Sujet :

Word

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Fonction MOD imbriquée dans une formule IF
    Bonjour à tous,

    J'ai quelques soucis quand je dois imbriquer une fonction dans une formule.

    Première question :

    Le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    { IF { = OR ({ COMPARE { MERGEFIELD CHAMP } = 1 } ; { COMPARE { MERGEFIELD CHAMP } = 2 } ) } = 1
    "Mon champ est égal à 1 ou 2"
    "Mon champ n'est ni 1 ni 2" }
    Le code suivant plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    { IF { = OR ( { MERGEFIELD CHAMP } = 1 ; { MERGEFIELD CHAMP } = 2 ) } = 1
    "Mon champ est égal à 1 ou 2"
    "Mon champ n'est ni 1 ni 2" }
    Pourquoi ?

    Et deuxième question, la plus importante car je n'ai pas de solution :

    Comment faire pour mettre un MOD dans un IF ?
    Je voudrais tester si un champ (dont la valeur est numérique, bien sûr) est divisible par dix ou pas.

    Exemple (qui ne fonctionne hélas pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    { IF { =MOD({ MERGEFIELD CHAMP } ; 10) } = 0
    "Mon champ est divisible par 10"
    "Mon champ n'est pas divisible par dix" }
    Et cette fois-ce, je ne peux pas contourner le problème avec un COMPARE comme au-dessus.

    Merci par avance pour vos idées éclairées.

  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 pense que le problème vient de la valeur de ton champ de fusion.

    Je viens de faire un essai avec une valeur ou un signet et ça fonctionne.

    Il m'arrive souvent de m'arracher les cheveux avec les champs.

  3. #3
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Pour ne pas trop s'embêter avec les champs, il faut penser à mettre des guillemets partout dans le test de résultat. Attention, il ne faut pas en mettre dans le modulo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {IF{=mod({MERGEFIELD CHAMP};10)}="0" "divisible par 10" "non divisible par 10" }
    Si tu mets pas de guillemet sur la comparaison, il faut penser à mettre un espace avant le chiffre placé après égal. Attention effectivement, si ton champ est de type texte, tu risques d'avoir des erreurs aussi.

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Merci pour vos réponses.
    Je continue à m'arracher les cheveux, mais je viens de comprendre.

    Heureux-oli a raison, c'est la valeur du champ de fusion qui pose problème.

    Tout fonctionne quand les valeurs sont inférieures à 1000.

    En effet, le programme tiers que j'utilise et dont je récupère les champs m'envoie les nombres supérieurs à 1000 sous la forme 1 000,00 et non 1000,00.

    Du coup Word pense qu'il y a deux nombres dans 11 960,00 (en l'occurrence 11 et 960,00) et ça plante.

    Si je mets un commutateur \# #, il additionne les deux ! (11 960,00 \# # devient 971) et du coup mon modulo ne fonctionne plus puisque 971 n'est pas divisible par 10.

    Comment faire?

  5. #5
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Marco le Pouillo,

    Citation Envoyé par Marco le Pouillot Voir le message
    Si je mets un commutateur \# #, il additionne les deux ! (11 960,00 \# # devient 971) et du coup mon modulo ne fonctionne plus puisque 971 n'est pas divisible par 10.
    C'est étrange \# # est un commutateur de mise en forme dans les champs, pas d'addition. Peux-tu nous mettre ton document (s'il ne contient pas d'info illégales ou confidentielles) sur le site pour qu'on puisse voir.

    @+

Discussions similaires

  1. [Toutes versions] Imbriquer une formule dans une formule à l'aide de l'outil Insertion de fonction
    Par Philippe Tulliez dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/08/2014, 11h21
  2. Réponses: 4
    Dernier message: 10/03/2011, 19h08
  3. Ecriture d'une fonction imbriquée dans une autre
    Par kase74 dans le forum Débuter
    Réponses: 13
    Dernier message: 20/10/2008, 21h45
  4. Réponses: 1
    Dernier message: 28/09/2007, 15h59
  5. Réponses: 6
    Dernier message: 18/01/2005, 16h24

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