Truc FileMaker N° 30 – zéro pointé

Un zéro oublié…

On prendra ici l’exemple du code postal français, mais c’est valable pour beaucoup de code en fait.

Pour les 9 premiers départements français, le code commence par un zéro. Par exemple, la ville de Meximieux, dans l’Ain, a le code 01800.

Or il arrive fréquemment que l’on récupère des adresses, donc incluant les codes postaux, sous des formats Excel. Il arrive tout aussi souvent que le développeur du fichier imagine que le code postal est un nombre. En réalité, ce n’est pas un nombre. C’est un code constitué de chiffres, ce qui est totalement différent. Un code postal, dans une base FileMaker, est donc une rubrique texte, et non une rubrique nombre.

C’est un piège bien français. Au Québec, on ne risque pas de se faire prendre, lorsqu’on a comme code postal H2T2Y4 par exemple 😉

Mais aujourd’hui, nous sommes tomber en plein dans le piège : notre rubrique de code postal a été définie comme nombre. À l’import des données, les zéros concernant nos 9 premiers départements ont disparu. Normal, un nombre, contrairement à un code, ne commence jamais par un zéro.

On aura donc une liste de CP du genre :

1800       (au lieu de 01800)
69000
1400      (au lieu de 01400).

Alerte !

Pas de panique, la puissance de calcul de FileMaker est à notre service 😉

En 3 étapes

1) Protection

FileMaker est puissant, mais nous ne sommes pas infaillibles.
On commence donc par faire une copie de sauvegarde.

2) Correction de la structure

On continue en corrigeant l’erreur, et on redéfinit la rubrique Code Postal comme une rubrique texte.
Ouf, les données ne sont pas écrasées !

3) Correction des données

Pour les codes postaux déjà importés alors que la rubrique était encore définie en tant que rubrique nombre, il faut corriger ceux qui ont été tronqués. Alors, en route pour la magie des calculs !

Prenons ici la solution de démarrage Contacts de la version 13. Entrons juste les codes postaux de 4 fiches dans la rubrique Code postal de travail. La première n’en a pas. Ensuite on alterne un code erroné, un code juste, et un code erroné.

ChangerCP1

Nous allons utiliser le menu Remplacer…
C’est un menu puissant. Il n’a pas d’annulation ! D’où l’importance d’avoir fait une sauvegarde, au cas où…

Il faut se mettre dans la rubrique visée. Ici je suis sur le modèle en vue liste de notre solution (Contacts). Le développeur n’y permet pas la saisie. La rubrique est transformée en bouton pour ouvrir la carte Google Map. On va donc sur le formulaire le détaillant (modèle Détails du contact) en cliquant sur la flèche à l’extrémité de la ligne.

On se place dans la rubrique Code postal de l’onglet Adresse professionnelle, en mode Utilisation. Notons que la fiche où nous sommes a le code « 1800 ». On lance le menu Enregistrement > Remplacer… ou son raccourci clavier facile à mémoriser : Cde-= sur Mac, Ctrl-= sous Windows.

ChangerCP2

On voit qu’il nous indique que la fiche active a pour valeur « 1800 ». On ne s’occupe pas des 2 premières options et on clique sur Remplacer par le résultat du calcul. Il suffit de définir le dit calcul.

  • Fin ( 0 & Code postal de travail ; 5 )

ChangerCP3

Cela rajoute, une fois la saisie validée, un zéro devant les codes déjà saisis. Cela n’en rajoute pas si on en a déjà 5.

ChangerCP4

On voit clairement le zéro tout seul sur la première fiche. Celle où la rubrique était vide…

Pourquoi cela marche-t-il ?

[0 & Code postal de travail] est une formule qui concatène, c’est-à-dire qui associe le zéro et la rubrique Code postal de travail. Dans FileMaker, l’opérateur de concaténation est l’esperluette : &.

Si Code postal de travail a 4 chiffres, on en obtient alors 5 puisqu’il y a le zéro en plus. Si Code postal de travail a déjà 5 caractères, on en a alors 6. Or, les codes postaux français n’en possèdent que 5, ce résultat est donc faux. On ne doit alors tenir compte de l’ajout du zéro que lorsqu’on n’a que 4 chiffres. Pour cela, on utilise la fonction Fin.

Elle s’écrit : Fin ( Texte ; NombreCaractères ). Elle existe depuis FileMaker 6.
Comme son nom l’indique, elle retient la fin d’une rubrique et ce sur une certaine longueur de caractères, à partir de la fin, ici 5 caractères.

En imbriquant les deux calculs, (concaténation du zéro et de la rubrique Code postal de travail, et la fonction Fin), on ajoute toujours le zéro mais on ne retient QUE les 5 derniers caractères. Si la rubrique possède 6 caractères, avec l’ajout du zéro, ce dernier est alors oublié… On obtient alors bien le résultat souhaité !

À la prochaine…

Michel Lansard

Merci de laisser un commentaire (Pas de commentaire )

Désolé, les commentaires des articles réservés sont eux-mêmes réservés

Il n'y a pas de commentaire pour l'instant, soyez le premier ;-)