Fonction "SI" ou équivalent sous Infopath ? - InfoPath Dev
in

InfoPath Dev

Fonction "SI" ou équivalent sous Infopath ?

Last post 02-23-2014 08:29 PM by Jimmy. 3 replies.
Page 1 of 1 (4 items)
Sort Posts: Previous Next
  • 02-18-2014 10:27 AM

    Fonction "SI" ou équivalent sous Infopath ?

    Bonjour à tous, Je cherche désespérément à trouver une alternative sous Infopath pour retrouver l'équivalent de la fonction "SI" sous Excel. Voici mon besoin: Permettre à un champs de vérifier dans un autre champs que si un mot précis est présent il effectue une formule de calcul. Si tel n'est pas le cas il exécute une autre formule mathématique. En mélangeant Infopath et excel cela devrait donné ceci : =SI (champs1="connecté"; champs2+champs3; champs4+champs5) Visiblement Infopath ne comprends cette fonction alors que celle-ci fonctionne parfaitement sous excel. Auriez vous une idée ? Dans l'attente d'une réponse de votre part Je vous remercie par avance pour le temps que vous prendrez à me répondre Cordialement Titi
  • 02-18-2014 08:02 PM In reply to

    Re: Fonction "SI" ou équivalent sous Infopath ?

    Bonjour, et bienvenue!

    Malhereusement, il n'existe pas dans XPath 1.0 une fonction simple comme SI(), mais il y a une autre moyenne un peu compliquée par accomplir cette fonctionalité. Elle est le suivant:

    concat(substring(champs2+champs3, 1, 100 * (champs1 = "connecté")), substring(champs4+champs5, 1, 100 * (champs1 != "connecté")))

    Ou en général:

    concat(substring(valeur1, 1, 100 * (condition)), substring(valeur2, 1, 100 * (opposé du condition))

    Ici, les "100" indiquent la longeur maximale (en charactéres) des deux valeurs. Si il y a une possibilité que les valeurs soient plus longue que 100 charactéres, vous pouvez utiliser un chiffre plus grand que 100.

    Pourriez vous essayer cette méthode?

    Jimmy Rishe / Software Developer / Microsoft MVP
    Qdabra Software
  • 02-19-2014 08:37 AM In reply to

    Re: Fonction "SI" ou équivalent sous Infopath ?

    Hello Jimmy, Merci beaucoup pour cette commande qui fonctionne parfaitement. Je n'ais pas réellement compris le but du 1, et du *. Si (pour parfaire mes connaissances) tu avais une explication ? En tout cas l'essentiel est là, ça marche. Je serais surement amené à revenir vous voir ;) Merci beaucoup
  • 02-23-2014 08:29 PM In reply to

    Re: Fonction "SI" ou équivalent sous Infopath ?

    Je suis content que la formule vous ait fonctionnée bien. Alors, laissez-moi expliquer un peu:

    Ici, le * s'agit simplement de la multiplication. Quand une valeur booléenne est utilisée dans une formule mathématique, elle est convertie en valeur numérique (1 par vraie et 0 par fausse).

    Donc, si la formule est evaluée quand condition est vraie, le résultat est:

    concat(substring(valeur1, 1, 100 * (1)), substring(valeur2, 1, 100 * (0)))

    donc

    concat(substring(valeur1, 1, 100), substring(valeur2, 1, 0))

    La valeur de substring(valeur1, 1, 100) serait les premiers 100 charactéres de valeur1, et la valeur de substring(valeur2, 1, 0) est un string vide, donc le résultat final c'est simplement les premiers 100 charactéres de valeur1.

    Vous pourriez vérifier que le procès est similaire quand condition est fausse.

    Jimmy Rishe / Software Developer / Microsoft MVP
    Qdabra Software
Page 1 of 1 (4 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.