Changements récents - Rechercher:

Tutoriel Filemaker

  1. Structure
  2. Modèles
  3. Opérations diverses
  4. Calculs
  5. Scripts
  6. Privilèges d'accès

Filemaker avancé

  1. Partage des données
  2. Astuces et Exemples
  3. Développement

Règles de nommage

Versions de FileMaker Pro

Liens utiles Contact Commentaires

edit SideBar

Fonctions texte : exemple

<==Fonctions logiques : exemple ^ Calculs Flags de doublons==>

Les fonctions texte de FileMaker Pro sont un peu un monde à part. A l'usage, elles permettent de faire beaucoup de choses et certains développeurs ont élevé leur usage à l'état de l'art pur ! Néanmoins, la liste des fonctions texte est assez longue, et couvre des usages très différents. Tâchons de trier un peu...

Mise en format
Liste de valeurs
Texte normal
Autres fonctions




Mise en format


Tout d'abord une série de 5 fonctions :

  • ObtenirTexte()
  • ObtenirNombre()
  • ObtenirDate()
  • ObtenirHeure()
  • ObtenirHorodatage()

Il s'agit, on l'aura reconnu, des 5 formes de rubriques non calculées. Ces 5 fonctions servent à remettre dans le format adéquat une donnée quelconque. A titre d'exemple, une donnée extraite d'une liste de valeur est du texte, même s'il s'agit de 12 ou 45. Si on désire utiliser cette donnée dans une opération arithmétique, ou effectuer un tri sur ces valeurs numériques, la fonction ObtenirNombre(MaDonnée) est, disons-le, fort utile, puisqu'elle "transformera" notre donnée "texte" en donnée "nombre" !

Globalement, que faut-il en dire ? Que, si on hésite à utiliser une de ces fonctions au sein d'un calcul ou d'un usage, alors il faut l'utiliser. En effet, si on a une donnée date appelée MaDate, ObtenirDate(MaDate) ne fera pas de tort !

A titre d'exemple, soit la chaîne de texte "18/12/2007". Le calcul ObtenirDate("18/12/2007") + 10 donnera bien le 28/12/2007.

Ces fonctions sont notamment très utiles sur des variables (de type $ ou $$). En effet, les variables sont par défaut de type "texte". En leur appliquant le bon format, on évitera bien des crises d'incompréhension devant des tris ou des recherches qui semblent, nous disons bien SEMBLENT, ne pas fonctionner...

Listes de valeurs


Une série de fonctions texte FileMaker Pro est liée aux listes de valeurs. Certaines sont très utilisées, d'autres moins :

  • ValeursFiltre()
  • ValeursDébut()
  • ValeursExtraites()
  • ValeursFin()
  • DécompteValeurs()
  • ObtenirValeur()

On rajoutera la fonction ElémentsListeValeurs(), tellement liée aux listes qu'on se demandera longtemps pourquoi elle est dans la catégorie Conception...

Les fonctions commençant par Valeurs*** sont à mettre en parallèle avec les fonctions correspondantes Filtre(), Début(), Extrait() et Fin(), expliquées plus loin.

DécompteValeurs() compte simplement le nombre de valeurs contenues dans une liste. Rappelons qu'une liste, au sens FileMaker pro du terme, n'est "que" du texte contenant des retours charriot (¶). Les puristes diront que n'importe quelle donnée texte est une liste d'au moins une valeur... Et que donc le retour charriot n'est pas obligatoire pour définir une liste ! Soit. Laissons là les puristes et contentons-nous de voir nos listes comme des séries de valeurs texte avec retour charriot... Attention toutefois, pour que tout soit clair : la dernière valeur d'une liste n'est pas terminée par un retour charriot (¶), au contraire des autres !
Donc DécompteValeurs() comptera le nombre de retours chariot + 1.

ObtenirValeur() est très utile : cette fonction va extraire une valeur d'une liste, selon son numéro d'ordre dans la liste. Sa structure est ObtenirValeur ( ListeValeurs ; NuméroValeur )

ElémentsListeValeurs() est une fonction clé, à utiliser au sein des autres fonctions Liste. En effet, dans toutes ces fonctions, fort utiles, il faut bien déterminer à un moment sur quelle liste on veut faire jouer sa fonction ! S'il s'agit d'une liste définie dans une rubrique texte, pas de souci, on mentionne sa rubrique.
Par exemple, une rubrique calculée au moyen de la fonction Liste(). Mais s'il s'agit d'une liste de valeurs FileMaker Pro, le seul moyen de faire jouer une de ces fonctions sur cette liste est d'utiliser au sein de son calcul ElémentslisteValeurs(), qui introduira dans le calcul le contenu effectif d'une liste de valeurs FileMaker Pro. La structure de la fonction étant ElémentsListeValeurs(NomFichier ; ListeValeurs), il faudrait donc y mettre à la fois le nom du fichier en cours et le nom de la liste. Comment ?

  • Pour le fichier, pas de souci : à moins d'une exception, on est dans le fichier en cours. On utilisera donc la fonction d'obtention Obtenir(NomFichier). Rien de plus simple et en plus on est sûr de ne pas se tromper dans le nom ! Autre avantage, si on change (à éviter, voire formellement interdit) le nom du fichier, elle fonctionne toujours.
  • Pour la liste, il faut mettre son nom complet entre "".

Par exemple :

  • DécompteValeurs ( ElémentsListeValeurs ( Obtenir ( NomFichier ) ; "Classes_r" ) ) donnera le nombre de classes reprises dans la liste des classes que l'on a définie.
    • Si ce nombre doit être mis à jour à chaque ajout ou suppression d'une classe, il ne faut pas oublier de cocher dans "autres options" Ne pas mémoriser...
    • Dans notre fichier exemple, pour des raisons de stockages successifs, nous avons rajouté un numéro pour différencier les versions. Le nom du fichier change et pourtant, même si vous n'enlevez pas le suffixe et le n°, le calcul que nous venons de décrire fonctionne.
  • Autre exemple que vous pouvez faire vous-même, ObtenirValeur( ElémentsListeValeurs(Obtenir(NomFichier) ; "Classes_r") ; 5 ) donnera la 5e classe de la liste de valeurs "Classes".

Texte normal


Indépendemment des listes, certaines fonctions concernent le travail sur du texte "normal", le plus souvent placé dans une rubrique texte. Ces fonctions concernent des caractères ou des mots. On peut du reste faire un parallèle entre ces fonctions texte et des fonctions liste :

Caractères Mots Liste
Début() MotsDébut() ValeursDébut()
Fin() MotsFin() ValeursFin()
Extrait() MotsExtraits() ValeursExtraites()
Filtre() - ValeursFiltre()

Les fonctions Début(), Fin() et Extrait() sont assez simples, ainsi que les autres associées : on précise un endroit de démarrage dans le texte ou la liste, et on précise le nombre d'éléments désirés. Ainsi, Début ( "blabla" ; 2 ) demande d'extraire, depuis le début de la chaîne de caractères blabla les 2 premiers caractères, soit "bl". Pas très compliqué... Autre exemple : MotsFin ( "on précise un endroit de démarrage dans le texte ou la liste" ; 3 ) donnera "ou la liste", c'est à dire les trois derniers mots en partant de la fin.
Toutes ces fonctions, comme les autres, peuvent utilement être associées ou cumulées. Par exemple, le nombre de mots ou de caractères peut être calculé. Nous y reviendrons dans la section avancée, mais tous vos essais et l'aide FMP de chaque fonction vous en apprendrons toujours énormément.

La fonction Filtre() oppose une suite de caractères de filtrage à une chaîne de caractères. Une utilisation courante est l'extraction de tous les chiffres d'un texte, sous la forme : Filtre ( RubAFiltrer ; "0123456789" ) qui rendra la valeur contenue dans la rubrique à filtrer, filtrée sur le contenu qui suit le ; (ici, on ne conserve que les chiffres et on élimine tous les autres caractères, blancs ou espaces compris). Attention : cette fonction est sensible à la casse (maj-min).

Autres fonctions


  • Occurrences() est assez utile : elle calcule le nombre de fois qu'une chaîne de caractères est présente au sein d'un texte.
    • Le résultat est donc un nombre.
    • Si on veut juste savoir si une chaîne de caractères est présente (au moins une fois) dans un texte, il faut éviter le piège classique de vérifier si le résultat est 1. En effet, si la chaîne recherchée est présente plus d'une fois, exemple : Occurrences("blabla" ; "bla"), le résultat ne sera pas 1 mais 2 (ou 3 ou plus), donc en fait simplement > 0...
  • Longueur() donne un nombre qui est le nombre de caractères d'un texte, espaces et retours chariot inclus.
  • Position() recherche la position d'une chaîne de caractères au sein d'un texte. La structure de la fonction est : Position ( Texte ; Chaîne Recherchée ; position de départ ; nombre de fois que la chaîne doit être rencontrée ). Exemple : Position ( "blabla" ; "a" ; 1 ; 2 ) donnera 6. En effet, on recherche la position de "a" au sein du texte "blabla", mais on ignore la première rencontre de "a" dans le texte, car on veut la 2e. Celle-ci, le 2e "a" du texte "blabla", se trouve en 6e position. Les combinaisons Longueur() et Position() sont courantes.
  • Remplace2() : qu'on pende celui qui a traduit le nom de cette fonction ! En anglais, son nom est Substitute(), qui semble plus explicite... Il s'agit tout bonnement de remplacer une chaîne de caractères par une autre au sein d'un texte.
    • Mais FileMaker Pro nous permet de jouer à la mitraillette, et une seule fonction peut opérer de multiples substitutions, si elles sont définies entre crochets. Exemple : Remplace2 ( "blabla" ; ["b";"t"] ; ["l";""] ; ["a";"o"]) donnera le célèbre "toto"
      Attention, les substitutions entre crochets sont successives.
      Ainsi, si on remplace dans "blabla" le B par un a, puis le a par un o (Remplace2 ( "blabla" ; ["b";"a"] ; ["a";"o"]), on obtiendra en finale "oloolo" : première substitution "blabla" ="alaala" - puis deuxième remplaçant les a par des o = "oloolo".
      Alors que si on écrit Remplace2 ( "blabla" ; ["a";"o"] ; ["b";"a"]), le résultat final sera ... "aloalo". Pas tout à fait pareil !

Notons enfin que toute la puissance de ces diverses fonctions se trouve dans leurs combinaisons au sein d'une même formule de calcul. Seule l'imagination est la limite !

<==Fonctions logiques : exemple ^ Calculs Flags de doublons==>
Éditer - Historique - Imprimer - Changements récents - Rechercher
Page mise à jour le 22 novembre 2017 à 04h39