Syntaxe avec IF dans word

JediMac

Membre expert
Club iGen
26 Octobre 2000
6 564
216
là-bas si j'y suis !
Bonjour,

Je m'arrache les cheveux avec ce qui doit sans doute être très simple.
Je veux faire un formulaire avec des champs à remplissage conditionné aux valeurs d'autres champs.
Par exemple, j'ai créé une liste déroulante avec Madame et Monsieur comme valeur. Le nom de ce champ est Civilité. Dans le texte de ma lettre, il y a des adjectifs qui s'accordent avec le genre. Par exemple "engagé" ou "engagée".
Je voudrai que cet accord se fasse automatiquement en fonction de ce que j'aurai sélectionné dans le champ Civilité. J'ai donc inséré le champ suivant :
Bloc de code:
{ IF Civilité = Monsieur "engagé" "engagée" }
mais ça ne fonctionne pas.

Où est l'erreur de syntaxe ?

Merci

PS : je travaille avec W2008
 
faudrait pas des guillemets autour de "Monsieur" ?
 
Comment insères-tu "Civilité" dans ta formule ? A vue de nez (mais ce n'est peut-être qu'un point lié à ton exemple) ça devrait prendre la forme :

{ IF { MERGEFIELD Civilité } = "Monsieur" "engagé" "engagée" }

Non ?
 
En reprenant ce code, c'est MERGEFIELD qui s'affiche.
Je n'ai pas compris…

Mais j'ai (un peu) réfléchi et un peu testé. En fait, ton champ "Civilité" c'est un signet, si j'ai bien déduit. Alors il faut l'appeler par un champ REF :

{ IF { REF Civilité } = "Monsieur" "engagé" "engagée" }

Enfin, sinon, il faut adapter le champ au type de valeur concernée...
 
Je n'ai pas compris…

Mais j'ai (un peu) réfléchi et un peu testé. En fait, ton champ "Civilité" c'est un signet, si j'ai bien déduit. Alors il faut l'appeler par un champ REF :

{ IF { REF Civilité } = "Monsieur" "engagé" "engagée" }

Enfin, sinon, il faut adapter le champ au type de valeur concernée...
J'ai aussi essayé plein de trucs sans qu'aucun ne fonctionne. Et ta proposition ne fonctionne pas non plus.
Dans les documents que j'ai lus, il est indiqué que mettre le nom du champ suffit.
D'ailleurs, si je fais le même genre de champ, mais avec une comparaison de nombre, ça fonctionne.
Par exemple { IF Civilité > 2 "engagé" "engagée" }, fonctionne.
Dès lors que je souhaite comparer du texte, ça coince :hein:.

---------- Nouveau message ajouté à 12h30 ---------- Le message précédent a été envoyé à 12h17 ----------

Finalement, je me demande si le champ Civilité qui est une liste déroulante ne pose pas problème aussi, sans que ce soit la seule cause :heu:.
 
Finalement, je me demande si le champ Civilité qui est une liste déroulante ne pose pas problème aussi, sans que ce soit la seule cause.
Oui, il faudrait que tu donnes plus de précisions sur ce champ parce que, en effet, je pense que c'est là qu'est la clé. Et ton test va dans ce sens. La réponse à la sélection doit renvoyer un nombre (un numéro d'ordre) et pas du texte, à mon avis.

Pour ma part, les test que j'ai faits fonctionnent bien, mais j'utilise comme source un champ texte simple. Je veux bien reconstituer ce que tu décris mais il me manque des détails, du coup... Si tu peux décrire plus précisément, on y verra plus clair.
 
Ben je ne vois pas que dire de plus que dans mon premier post.

Un 1er champ nommé Civilité qui est une liste déroulante faite avec les outils "formulaire" de word. Les 2 valeurs proposées sont Monsieur ou Madame.
Ensuite dans le texte de la lettre, je voudrai mettre un autre champ dont le remplissage sera conditionné à ce qui aura été choisi dans le champ Civilité et qui permettra d'accorder l'adjectif "engagé" automatiquement.
 
Un 1er champ nommé Civilité qui est une liste déroulante faite avec les outils "formulaire" de word. Les 2 valeurs proposées sont Monsieur ou Madame.
Eh bien voilà. Comme ça je peux reproduire sans (trop de) risque de me tromper la situation. Logiquement, par contre, je confirme que ça devrait fonctionner dans la dernière version que j'ai indiquée, à savoir :
{ IF { REF Civilité } = "Monsieur" "engagé" "engagée" }

Mais bon, en procédant bien étape par étape (c'est à dire en saisissant la fonction IF via le menu "Insertion" > "Champ..." puis en insérant la fonction REF de nouveau via "Insertion" > "Champ..."). Une fois le formulaire verrouillé, si je sélectionne l'une des deux propositions et que je fais un clic droit sur le champ pour "Mettre à jour les champs" (ou que je lance l'impression, ce qui recalcule les champs en automatique), j'obtiens bien la réponse attendue...
 
Mais bon, en procédant bien étape par étape (c'est à dire en saisissant la fonction IF via le menu "Insertion" > "Champ..." puis en insérant la fonction REF de nouveau via "Insertion" > "Champ..."). Une fois le formulaire verrouillé, si je sélectionne l'une des deux propositions et que je fais un clic droit sur le champ pour "Mettre à jour les champs" (ou que je lance l'impression, ce qui recalcule les champs en automatique), j'obtiens bien la réponse attendue...
C'était là que ça grippait ! Je tapais directement dans le champ, plutôt que de faire ça en 2 étapes.
J'ai suivi tes étapes et ça roule.

Merci :zen::zen:
 
Bonjour a vous,

je fait actuellement un mini projet et dans celui-ci j'ai besoin
des calculs et d'utilisation des condition (IF)pour faire en faire
mais je rencontre certain problèmes au niveau des controls et surement de la syntaxe.
pouvez vous s'il vous plait m'aider dans les cas qui suivent :
Cas 1 :

La condition du if ne se fait que 4fois pas plus (formule ci-dessous)

=IF(A1=1;1;IF(A1=2;2;IF(A1=3;3;IF(A1=4;4;0))))

Quand je vais à plus de 4 conditions, je n’ai plus de résultat

=IF(A1=1;1;IF(A1=2;2;IF(A1=3;3;IF(A1=4;4;IF(A1=5;5;0)))))

Cas 2:

J’aimerai pouvoir faire des contrôles sous Word(2010) des alphanumériques

=IF (A1=AB14 ; B1*4 ; B1-2)

Lorsque je fais ce teste dans un tableau l’erreur « Syntaxe Error » s’affiche
 
Merci de préciser de quelle version de Word, en quel niveau de mise à jour, sur quelle version de Mac OS X il est question. Précise aussi ce que tu cherches à obtenir comme résultat. Ça peut avoir une incidence sur le contexte et les réponses à apporter à la demande...

Cas 1 :
La condition du if ne se fait que 4fois pas plus (formule ci-dessous)
=IF(A1=1;1;IF(A1=2;2;IF(A1=3;3;IF(A1=4;4;0))))
Quand je vais à plus de 4 conditions, je n’ai plus de résultat
=IF(A1=1;1;IF(A1=2;2;IF(A1=3;3;IF(A1=4;4;IF(A1=5;5;0)))))
Tu te doutes bien que l'imbrication de fonctions a des limites que tu sembles les avoir atteintes avec tes quatre fonctions imbriquées. Est-il d'ailleurs bien raisonnable d'en demander autant à Word, une autre application ne serait-elle pas plus indiquée pour ce que tu cherches à faire/obtenir ?

Si on se fie à ce que tu donnes comme exemple et aux instructions données par Circé dans cet échange (sur un autre forum), rien ne t'oblige à imbriquer les fonctions IF, tu peux les juxtaposer. Et donc écrire plutôt quelque chose comme :
{ IF A1 = "1" "1"} {IF A1 = "2" "2"} {IF A1 = "3" "3" } {IF A1 = "4" "4" } {IF A1 = "5" "5" }
Disons que c'est ce que j'essayerais de faire...

Cas 2:
J’aimerais pouvoir faire des contrôles sous Word(2010) des alphanumériques
=IF (A1=AB14 ; B1*4 ; B1-2)
Lorsque je fais ce teste dans un tableau l’erreur « Syntaxe Error » s’affiche
Il faudrait donner plus de précisions sur le contexte car, en théorie, cela devrait fonctionner. Du moins si les cellules existent (on peut douter qu'il existe une colonne AB dans un tableau Word) et qu'elles contiennent des nombres...
 
bonjour Aliboron,
je suis sous Word 2010 et OS:Windows 7 Pro.
ce que je cherche à faire c'est une fiche de transfert comme on en trouve dans les bank: qui lorsqu'on rentre son numéro de compte,le RIB sort automatiquement(fait).Mais maintenant il se trouve que nous devons faire des controls (pour effectuer des transfert dans d'autre pays) pour certains pays comme la France(FR76),l’Espagne(ES28),...et d'autre pays qui ne seront pris en charge.
Les données sont rentrés dans des cases( tableaux ) ou en rentre le code du pays,code agence,numéro compte et rib.
Pour ma part,je doit faire un control sur les pays de tel sorte que lorsque le code du pays entré est pris en charge par la banque sa fait le calcul du rib et quand celui ci est pas pris,sa ne calcul pas d'ou l'exemple :

IF (A1=FR76 ; B1*4 ; 'rien faire')
 
Drôles d'idées que de venir sur un forum dédié au Mac pour poser des questions s'appliquant à des outils pour Windows et d'utiliser Word pour des fonctionnalités qui relèvent plutôt d'Excel...

Mélanger les notions de texte et de nombre dans les fonctions de Word n'est pas vraiment possible. Les fonctions ne sont pas prévues pour ça. Dans Excel, tout cela fonctionnerait sans le moindre souci, exactement (ou presque) sous la forme que tu donnes (en fait ce serait : =SI(A1="FR76";B1*4;"rien faire") qui serait à utiliser)...