Remplacer un champ par un autre à l’affichage

Dans une table Personnes, j’ai 2 champs : Téléphone fixe et Téléphone mobile. Dans un état imprimé par exemple, je voudrais que le téléphone fixe soit affiché systématiquement, sauf s’il n’est pas renseigné. Dans ce cas, il doit être remplacé par le téléphone mobile. Comment faire ?

La table de départ

Votre table pourrait avoir la forme suivante.
Pour la 3ème personne, il faudrait que le téléphone mobile s’affiche, en remplacement du téléphone fixe.

Téléphones

La requête

Vous pourriez intervenir à différents endroits d’Access (dont l’état qui est l’objectif). Mais il est plus efficace de travailler au niveau de la requête : de cette manière, plusieurs états pourront réutiliser la formule que vous allez mettre en place.

  1. Créez une requête en mode Création, basée sur votre table des personnes.
  2. Placez les champs qui vous intéressent sur la grille de requête.
  3. Ajoutez le champ calculé suivant :

La fonction Nz() convertit une valeur vide (Null) en une seconde valeur. En d’autres termes, si [Téléphone fixe] est vide, on le remplace par [Téléphone mobile].

On aurait également pu faire appel à une condition Si, mais c’est juste un peu plus lourd :

Et voici la requête finale (il ne reste plus qu’à construire un état à partir d’elle, en utilisant le champ calculé Téléphone plutôt que les autres champs) :

Téléphones

Vous aimerez aussi...

2 réponses

  1. Hervé Inisan dit :

    Noël > Il faut écrire Nz([le champ], 0) plutôt que Nz([le champ], "0"). Dans le 2ème cas, le champ est converti en chaîne de caractères, ce qui explique pourquoi « 1 » + « 0 » donne « 10 ». En numérique, 1 + 0 donne bien 1 (si les calculs ne sont pas faits en VBA, remplacer aussi mes virgules par des points-virgules).

  2. Noël dit :

    Bonjour,
    J’utilise la fonction Nz pour remplacer un champ vide par 0.
    Le problème est lorsque je veux additionner le tout, cela ne fait pas 1+0=1 mais 10. C’est à dire que 0 n’est pas considéré comme un chiffre mais comme un caractère que l’on vient coller à coller de l’autre.
    Comment faire pour considérer 0 comme un chiffre ?

    Merci pour votre aide.
    Noël

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *