Quoi, Word savait faire des calculs !
Oui, c'est très limité mais on peut effectivement créer des formules avec même de fonctions imbriquées !
- Dans les tableaux, en se basant sur les références aux cellules par exemple (par exemple : =B2+B3).
- En dehors des tableaux, en se basant sur les noms des signets à utiliser (par exemple =).
Principes généraux
- Les formules se font via des champs Word et elles commencent souvent par le signe = (égale) mais pas toujours.
- Contrairement à Excel, la mise à jour n'est pas toujours automatique : il faut souvent forcer le recalcul.
- Comme dans Excel, on peut imbriquer les champs pour générer des formules plus complexes.
- Il n'y a pas de poignées de recopie pour générer les formules d'après un "modèle" comme dans Excel.
- Les formules ne s'adaptent pas en cas d'ajout/suppression de colonne/ligne.
Exemples de formules
{ = SUM(ABOVE) } => Addition de toutes les cellules de la colonne (dans un tableau) situées au-dessus.
{ = B5 * E8 \# "# ##0,00 €;(# ##0,00 €)"} => Multiplie deux cellules avec un format monétaire (positif ; négatif).
{ = PrixHT + TVA } => Additionne deux signets nommés.D'autres exemples seront présentés au long de cet article.
Création de la formule
- Se positionner là ou l'on veut le résultat de la formule.
- Insérer le champ.
- Solution 1 : Utiliser la boîte de dialogue Champ.
- Aller dans l'onglet Insertion > QuickPart > Champ… > Dans la liste Noms de champs choisir = (Formule) puis cliquer sur le bouton Formule... pour faire apparaitre la boîte de dialogue Formule.
- Utiliser les outils de la boîte de dialogue pour rédiger la formule dans la zone Formule.
- Saisir ou choisir un format d'affichage pour le résultat de la formule

- Solution 2 : Créer le champ manuellement.
- Utiliser le raccourci clavier Ctrl+F9 pour générer un champ vide { }. (Attention : saisir les accolades au clavier ne fonctionne pas !),

- Saisir la formule entre les accolades,
- Afficher le résultat en appuyant sur la touche F9 du clavier (mise à jour) ou utiliser la commande du menu contextuel (clic droit de la souris) Basculer les codes de champs.

- Utiliser le raccourci clavier Ctrl+F9 pour générer un champ vide { }. (Attention : saisir les accolades au clavier ne fonctionne pas !),
- Solution 3 (Spécifique aux tableaux) :
- Cliquer dans la cellule de destination et utiliser la commande Formule du ruban outil Disposition du tableau pour faire apparaitre la boîte de dialogue Formule.
- Solution 4 (Spécifique au champ de formulaire "Hérités") :
- Insérer un champ de formulaire Zone d'édition (Texte) via l'onglet Développeur,
- Double-cliquer sur ce champ pour ouvrir ses options,
- Changer son type en Calcul,
- Dans la zone Expression, saisir la formule désirée,
- Personnaliser le nom du signet lié à ce contrôle (conseil).
- Cocher Calculer à la sortie pour que le résultat s'actualise dès que l'utilisateur quitte le champ.

Bascule Formule/Résultat
Pour passer de l'un à l'autre on peut utiliser :
- La commande Basculer les codes de champs du menu contextuel (clic droit de la souris) pour agir sur un seul champ.
- Le raccourcis MAJ+F9 pour agir sur un seul champ.
- Le raccourcis Alt+F9 pour agir sur tous les champs du document.
Mise à jour des résultats
- Voir l'article Dans la jungle de la mise à jour des champs
Opérateurs disponibles
- + : addition,
- - : soustraction,
- * : multiplication,
- / : division,
- ^ : puissance,
- ( ) : parenthèses,
- = : égal,
- > : supérieur à,
- < : inférieur à,
- >= : supérieur ou égal à,
- <= : inférieur ou égal à,
- <> : différent de.
Fonctions de calcul disponibles
En plus de ces opérateurs, il est possible d'utiliser 18 fonctions de calculs.
- SUM : Somme des valeurs.
- { = SUM(3;5;2) } > 10
- AVERAGE : Moyenne des valeurs.
- COUNT : Nombre de valeurs.
- PRODUCT = Produit des valeurs.
- { = PRODUCT(5 ;2) } > 10
- MIN : Valeur minimum.
- MAX : Valeur maximum.
- MOD : Le reste d'une division.
- { = MOD(11;3) } > 2
- IF : Permet de faire un choix entre 2 possibilités (voir fonction SI d'Excel).
La logique est la même que celle de la bien connue fonction SI d'Excel
{ IF Expression1 Operateur Expression2 Valeur_si_Vrai Valeur_si_Faux }Que l'on peut traduire par : "Si une comparaison est VRAI alors faire Valeur_si_Vrai sinon faire Valeur_si_Faux.
Remarque :
- Pas de signe = (égal) au début.
- Expression 1/2 : Un nombre, un texte, le nom d'un signet, un champ.
- Si non précisé, le champ IF ne renvoie rien dans ce cas.
- Attention Word est sensible à la casse ("Bob" <> "bob").
- Avec les opérateurs = et <> il est possible d'utiliser les caractères générique "?" (remplace 1 caractère) et "*" (remplace plusieurs caractères).
- Je n'ai pas trouvé comment désigner les véritables caractères "?" et "*", le classique "~?" ne semble pas fonctionner 😰.
- Limité à 128 caractères
- Opérateur :
- Mettre un espace avant et après l'opérateur.
- Valeur_si_Vrai/Valeur_si_Faux : Un nombre, un texte, le nom d'un signet, un champ (sauf ceux de type contrôle de formulaire).
- Si c'est un texte comportant des espaces, l'encadrer de guillemets.
Exemples :
Afficher "Cher" ou "Chère" en fonction de la civilité utilisée lors dʼun publipostage
{ IF { MERGEFIELD Civilités \* FirstCap } = "Monsieur" "Cher" "Chère" }
Afficher le texte "Réduction" si la valeur du signet S_Age est inférieur à 18
{ IF S_Age < 18 Réduction "Pas de réduction" } => Guillemets nécessaire pour Expression2 (espaces)
{ IF S_Age < 18 Réduction } => Vide si Age >= 18
Afficher le texte "Réduction" si la valeur dʼune cellule dʼun tableau est inférieur à 18
{ IF { = C2 } < 18 Réduction "Pas de réduction" } => Cellule C2 (3ème colonne et 2ème ligne)
{ IF { = C2 < 18 } = 1 Réduction "Pas de réduction" } => Autre solution
Utilisation de caractères génériques
{ IF S_Nom= "?ob" "Bob ou Rob ?" "C'est qui ?" }
{ IF S_Nom = "B*" "Commence par B" "Ce n'est pas un B au début" }
Afficher "Dernière relance" si la date de la facture est inférieure au 01/01/2023 (ne rien afficher si la date de la facture est vide)
{ IF { MERGEFIELD DateFacture } = "" "" { IF { MERGEFIELD DateFacture \@ "yyyyMMdd" } < 20230101 "Dernière relance" } }- OR : Retourne 1 si au moins une expression est vraie. Utilisé généralement dans un champ IF.
- L'utilisation du champ COMPARE est conseillé.
- Le séparateur est normalement le point-virgule sur les versions françaises.
- Limité à 2 arguments (passer par une imbrication au-delà=> = OR( a1; OR(a2; a3)) ).
- Peut être remplacé avantageusement par une addition.
- AND : Retourne 1 si toutes les expressions sont vraies sinon 0. Utilisé généralement dans un champ IF.
- L'utilisation du champ COMPARE est conseillé.
- Le séparateur est normalement le point-virgule sur les versions françaises.
- Limité à 2 arguments (passer par une imbrication au-delà => = AND( a1; AND(a2; a3)) ).
- Peut être remplacé avantageusement par une multiplication.
{ IF { = AND({ COMPARE { MERGEFIELD Ville \* upper } = "PARIS" }; { COMPARE { MERGEFIELD Montant } > 100 }) } = 1 "Cas1" "Cas2" }
Solution avec une multiplication
{ IF { = { COMPARE { MERGEFIELD Ville \* upper } = "PARIS" } * { COMPARE { MERGEFIELD Montant } > 100 } } = 1 "Cas1" "Cas2" }- NOT : Inverse la valeur logique. Utilisé généralement dans un champ IF.
- ABS : Valeur absolue d'une valeur.
- { = ABS(-5) } > 5
Accorder le mot "Euro"
{ MERGEFIELD Mt \# "# ##0,00" } euro{ IF { = ABS({ MERGEFIELD Mt }) } > = 2 "s" }- INT : Partie entière (Arrondit à l'entier le plus proche du côté du zéro).
- En configuration standard française, la virgule est le séparateur décimale.
- { = INT(5,8) } > 5
- { = INT(5.8) } > !Erreur de syntaxe.
- { = INT(-5,8) } > -5
- ROUND : Arrondi au nombre de décimales spécifié.
- { = ROUND(5,28 ; 1) } > 5,3
- { = ROUND(-5,28 ; 1) } > -5,3
- SIGN : Retourne 1 si la valeur est positive, -1 si elle est négative et 0 si elle est nulle.
- { =SIGN(-5) } > -1
- TRUE : Retourne la valeur 1.
- FALSE : Retourne la valeur 0.
- DEFINED : Vérifie si une valeur est valide (retourne 1 ou 0).
- Souvent utilisé pour tester l'existence du signet avant de l'utiliser afin d'éviter l'erreur !Signet non défini.
Calcul dans les tableaux
Tout comme Excel les colonnes du tableau sont représentées par une lettre (à partir de la lettre A pour la 1ère colonne) et les lignes par un chiffre/nombre (à partir de 1 pour la 1ère ligne).

Exemples :
{ = SUM(A2:B4;E1) } =>Addition des cellules de la plage allant de A2 à B4 ainsi que celle en E1
Le problème des cellules fusionnées/fractionnées
Cette plus grande souplesse que l'on a dans Word par rapport à Excel rend la création de formule problématique.
Word numérote les "cellules réelles" de gauche à droite ligne par ligne.
- Il n'y a pas de cellules C1, C2... mais C4 existe et contient 32.
Donc à éviter pour avoir des résultats fiables !
Mots clés de direction
- LEFT : Cellules à gauche sur la même ligne.
- RIGHT : Cellules à droite sur la même ligne.
- ABOVE : Cellules au-dessus dans la même colonne.
- BELOW : Cellules en dessous dans la même colonne.
Une cellule vide va signifier une fin de zone de calcul donc les cellules suivantes seront ignorées si l'on utilise les mots clés de direction.
Exemple avec ABOVE :

Calcul hors tableaux
Dans ce cas, pour repérer dans le document les valeurs à utiliser, on utilise l'outil Signet afin de les marquer et ainsi de pouvoir y faire référence dans les formules.
Création d'un signet
- Sélectionner une valeur devant être utilisée,
- Utiliser la commande Signet du ruban Insertion,
- Donner un nom à ce nouveau signet
- Ce nom doit être unique parmi les signets (pas de distinction de casse ! Exemple : Tva et TVA sont des noms identiques pour Word)
- Être constitué seulement de chiffre et de lettres (pas d'espace ou de signe comme #+@ [...)
- Ne pas commencer par un chiffre
- Valider via le bouton Ajouter.
Exemple
- On veut générer un en-tête du type "Page X sur Y" mais sans tenir compte des 1ères pages étant une préface.
- Insérer un saut de section afin d'isoler les pages de la préface dans une section (section 1).
- Désactiver le paramètre Lier au précédent dans l'en-tête de la section suivante (section 2) pour rendre l'en-tête de la section 1 indépendantes des autres.
- Insérer le champ SECTIONPAGES (PagesDeSection dans la catégorie Numérotation) dans l'en-tête de la section 1 pour obtenir le nombre de page de la préface.
- Sélectionner la valeur et définir un signet via le ruban Insertion (par exemple "NbPgS1").
- Masquer ce texte (Formatage Masqué ou via la couleur de police).
- Dans l'en-tête de la section 2, générer l'entête désiré en soustrayant du nombre de page du document le signet NbPgS1.
Ce qui peut donner :
{ PAGE } sur { = { NUMPAGES } - NbPgS1 }Comment 1 200 + 4 peut être égale à 205 ?
Word a malheureusement interprété 1 200 comme 2 valeurs différentes (1 et 200) et a donc fait cette opération : 1 + 200 + 4 qui est bien égale à 205 !

Le problème vient de l'espace servant de séparateur de millier (espace ou espace insécable) qui gêne Word.
Solution :
- Ne pas en mettre ! 😁 😰
- Le séparateur de millier généré par le code d'affichage \# "# ##0" ne pause pas ce problème. Ainsi, si la cellule B1 contenait { = 1200 \# "# ##0" }, le résultat des formules aurait alors été juste.
Calculatrice intégré
Il existe l'Outil Calculer, perdu dans les tréfond de Word (commande à ajouter à l'interface de Word), permettant de résoudre des opérations simples à partir du texte sélectionné en affichant le résultat dans la barre d'état (en bas à gauche).

Pour conclure
- Word sait calculer… mais ce n’est pas Excel. Les formules sont très limités, plus complexes à saisir et à debugger.
- Oublier l'idée, par exemple, de calculer des décalages de dates (calcul souvent demandé).
- Donc a utiliser avec parcimonie !
Autres épisodes sur les champs :
A la découverte du champ STYLEREF
Merci pour votre attention bienveillante.
