{"id":10897,"date":"2023-05-08T06:00:00","date_gmt":"2023-05-08T06:00:00","guid":{"rendered":"https:\/\/www.directimpactsolutions.com\/?p=10897"},"modified":"2025-05-01T05:49:05","modified_gmt":"2025-05-01T05:49:05","slug":"mes-5-principales-fonctions-personnalisees-filemaker","status":"publish","type":"post","link":"https:\/\/www.directimpactsolutions.com\/fr\/mes-5-principales-fonctions-personnalisees-filemaker\/","title":{"rendered":"Mes 5 principales fonctions personnalis\u00e9es FileMaker"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Qu&rsquo;est-ce qu&rsquo;une fonction personnalis\u00e9e ?<\/h2><p>Les <a href=\"https:\/\/www.directimpactsolutions.com\/en\/custom-filemaker-solutions\/\" data-type=\"URL\" data-id=\"https:\/\/www.directimpactsolutions.com\/en\/Custom-FileMaker-Solutions\/\">fonctions personnalis\u00e9es<\/a> dans FileMaker sont des fonctions d\u00e9finies par le d\u00e9veloppeur qui peuvent \u00eatre r\u00e9utilis\u00e9es partout dans le fichier de base de donn\u00e9es dans lequel elles sont cr\u00e9\u00e9es. En tant que d\u00e9veloppeurs, nous pouvons nous retrouver \u00e0 \u00e9valuer un calcul plusieurs fois, ce qui est un bon signe pour utiliser une fonction personnalis\u00e9e. Le site Web de <a href=\"https:\/\/www.briandunning.com\/filemaker-custom-functions\/\" target=\"_blank\" rel=\"noreferrer noopener\">Brian Dunning<\/a> constitue une excellente ressource pour des fonctions personnalis\u00e9es pr\u00e9-fabriqu\u00e9es.<\/p><h2 class=\"wp-block-heading\">Top 5 des fonctions personnalis\u00e9es<\/h2><p>La d\u00e9finition d\u2019un <em>Top 5<\/em> des fonctions personnalis\u00e9es ne sera pas la m\u00eame pour tout le monde. Mes cinq meilleures fonctions personnalis\u00e9es sont celles que j&rsquo;utilise dans plusieurs bases de donn\u00e9es pour gagner du temps, ou simplement celles que j&rsquo;utilise souvent.<\/p><ul class=\"wp-block-list\"><li>SysPlatform<\/li>\n\n<li>RemoveValue<\/li>\n\n<li>Age<\/li>\n\n<li>Patternize<\/li>\n\n<li>IsServer<\/li><\/ul><h3 class=\"wp-block-heading\">SysPlatform<\/h3><h6 class=\"wp-block-heading\"><strong>D\u00e9finition de la fonction personnalis\u00e9e<\/strong><\/h6><pre class=\"wp-block-code has-small-font-size\"><code><code>Let ( &#91;\nsystem = Get ( SystemPlatform ) ;\nplatform = Case ( \n\t\tsystem = 1 ; \"Mac\" ; \n\t\tsystem = -2 ; \"Win\" ; \n\t\tsystem = 3 ; \"iOS\" ; \n\t\tsystem = 4 ; \"Web\" ; \n\t\t\/\/defaultResult \n\t\t\"N\/A\"\n\t\t)\n] ; \n\nplatform\n\n)<\/code><\/code><\/pre><div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-fe9cc265 wp-block-group-is-layout-flex\"><p>Lorsqu&rsquo;il s&rsquo;agit de solutions multiplateformes, il est imp\u00e9ratif de savoir sur quelle plateforme se trouve l&rsquo;utilisateur final. Je ne sais pas ce qu&rsquo;il en est pour vous, mais j&rsquo;ai tendance \u00e0 oublier quels chiffres correspondent \u00e0 quelle plateforme syst\u00e8me, ce qui explique pourquoi j&rsquo;utilise fr\u00e9quemment cette fonction personnalis\u00e9e. Au lieu d&rsquo;utiliser constamment Get(SystemPlatform) et de m\u00e9moriser quel num\u00e9ro appartient \u00e0 quelle plate-forme, vous pouvez simplement cr\u00e9er une fonction personnalis\u00e9e qui renvoie le nom de la plate-forme. Une fois cette fonction cr\u00e9\u00e9e, votre processus de script est plus clair et plus rapide \u00e0 mettre en \u0153uvre.<\/p>\n\n<p><\/p>\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"296\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/sysPlatform.png\" alt=\"\" class=\"wp-image-7705\" style=\"width:-37px;height:-23px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/sysPlatform.png 474w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/sysPlatform-300x187.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/sysPlatform-400x250.png 400w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure><\/div><p><\/p><h3 class=\"wp-block-heading\">RemoveValue ( listOfValues ; value )<\/h3><h6 class=\"wp-block-heading\"><strong>D\u00e9finition de la fonction personnalis\u00e9e<\/strong><\/h6><pre class=\"wp-block-code\"><code><code>\/*\nCUSTOM FUNCTION: RemoveValue(listOfValues; value)\nby Debi Fuchs of Aptworks Consulting, debi@aptworks.com\nSpeedily (and with no recursion or cleanup of empty values) remove all instances of a value from a list. (For cleanup try custom function CullNulls)\ne.g. RemoveValue(\"\u00b69\u00b62\u00b64\u00b68\u00b68\u00b6\u00b67\u00b6\u00b68\u00b69\u00b6\u00b6\"; \"8\") -&gt; \"\u00b69\u00b62\u00b64\u00b6\u00b67\u00b6\u00b69\u00b6\u00b6\"\nLAST MODIFIED: 28-AUG-2018 by Debi Fuchs of Aptworks Consulting\n*\/\n\nLet(\n  s = \"##*aaa*##\"; \/\/very unlikely string\n  Case(\n    \/\/Check if unlikely string rears its head\n    Position( listOfValues; s; 0; 1 );\n    \/\/If so, simulate an out-of-range error.\n    Evaluate( \"Factorial( -1 )\" ); \n    \/\/Check if value itself contains a paragraph return\n    Position( value; \u00b6; 0; 1 );\n    \/\/If so, simulate an out-of-range error.\n    Evaluate( \"Factorial( -1 )\" ); \n    \/\/ Otherwise, proceed to get rid of nulls\n    Substitute(\n      s &amp; listOfValues &amp; s;\n      &#91; \"\u00b6\"; s &amp; \u00b6 &amp; s ];\n      &#91; s &amp; value &amp; s &amp; \u00b6; \"\" ];\n      &#91; \u00b6 &amp; s &amp; value &amp; s; \"\" ];\n      &#91; s &amp; value &amp; s; \"\" ];\n      &#91; s; \"\" ]\n    )\n  )\n)<\/code><\/code><\/pre><p>FilterValues renvoie un r\u00e9sultat texte contenant uniquement les valeurs qui ont \u00e9t\u00e9 pass\u00e9es en tant que filterValues, alors que cette fonction personnalis\u00e9e est tout le contraire. J&rsquo;ai souvent eu besoin de supprimer une valeur sp\u00e9cifique d&rsquo;une liste de valeurs, et c&rsquo;est l\u00e0 que la fonction personnalis\u00e9e RemoveValue s&rsquo;av\u00e8re utile.<\/p><h5 class=\"wp-block-heading\">Explication des param\u00e8tres :<\/h5><p><strong>listofValues<\/strong> \u2013 liste de valeurs<br\/><strong>value <\/strong>\u2013 valeur \u00e0 supprimer<\/p><p><strong>Exemple:<\/strong><br\/>RemoveValue ( \u00ab Vert \u00bb&amp;\u00b6&amp; \u00bbRouge \u00bb&amp;\u00b6&amp; \u00bbRouge \u00bb&amp;\u00b6&amp; \u00bbMauve \u00bb ; \u00ab Rouge \u00bb )<\/p><p><strong>R\u00e9sultat :<br\/><\/strong>Vert<br\/>Mauve<\/p><h3 class=\"wp-block-heading\">Age ( Birthdate )<\/h3><div class=\"inherit-container-width wp-block-group alignwide is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\"><p class=\"has-text-align-left\"><strong>D\u00e9finition de la fonction personnalis\u00e9e<\/strong><\/p>\n\n<p class=\"has-text-align-left\">Year (Get(CurrentDate)) &#8211;<br\/>Year (BirthDate) &#8211;<br\/>(<br\/>Get (CurrentDate) &lt; Date (<br\/>Month (BirthDate);<br\/>Day (BirthDate);<br\/>Year (Get(CurrentDate))<br\/>)<br\/>)<\/p><\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"923\" height=\"520\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-1.png\" alt=\"\" class=\"wp-image-7733 size-full\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-1.png 923w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-1-300x169.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-1-768x433.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-1-480x270.png 480w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><\/figure><\/div><\/div><p>Je suis s\u00fbr que beaucoup d&rsquo;entre nous ont d\u00e9j\u00e0 eu besoin de conna\u00eetre l&rsquo;\u00e2ge d&rsquo;une personne dans un enregistrement.<\/p><p><strong>Birthdate<\/strong> \u2013 Date de naissance qui sera utilis\u00e9 pour v\u00e9rifier l&rsquo;\u00e2ge<\/p><h3 class=\"wp-block-heading\">Patternize ( direction ; pattern ; replaceChar ; value ; pad? )<\/h3><p>Avez-vous d\u00e9j\u00e0 eu besoin d&rsquo;un format sp\u00e9cifique pour un num\u00e9ro de t\u00e9l\u00e9phone, ou peut-\u00eatre de masquer les cartes de cr\u00e9dit et de n&rsquo;afficher que les 4 derniers chiffres ? Cette fonction personnalis\u00e9e vous permet de faire les deux. Vous ins\u00e9rez le mod\u00e8le et le format que vous souhaitez est affich\u00e9. <\/p><div class=\"inherit-container-width wp-block-group alignwide is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-media-text alignwide is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"618\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number.jpeg\" alt=\"patternize\" class=\"wp-image-7729 size-full\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number.jpeg 1000w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number-300x185.jpeg 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number-768x475.jpeg 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number-980x606.jpeg 980w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/number-480x297.jpeg 480w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure><div class=\"wp-block-media-text__content\"><p><strong>Explication des param\u00e8tres :<\/strong><\/p>\n\n<p><strong>direction<\/strong> \u2013 LTR (de gauche \u00e0 droite) ou RTL (de droite \u00e0 gauche)<br\/><strong>pattern<\/strong> \u2013 le mod\u00e8le de format que vous souhaitez<br\/><strong>replaceChar <\/strong>\u2013 Caract\u00e8re dans ce mod\u00e8le que je veux remplacer par des donn\u00e9es<br\/><strong>value<\/strong> \u2013 les donn\u00e9es qui sont transmises<br\/><strong>pad? <\/strong>\u2013 0 \u2013 Je ne veux pas inclure le reste du mod\u00e8le une fois que je n\u2019ai plus de donn\u00e9es.<\/p><\/div><\/div><\/div><h5 class=\"wp-block-heading\"><\/h5><p><strong>Exemple :<\/strong><\/p><p>Patternize ( \u00ab\u00a0LTR\u00a0\u00bb ; \u00ab\u00a0###-###-####\u00a0\u00bb ; \u00ab\u00a0#\u00a0\u00bb ; \u00ab\u00a07183233333\u00a0\u00bb ; 0 )<br\/>Patternize ( \u00ab\u00a0LTR\u00a0\u00bb ; \u00ab\u00a0###-###-#### x ###\u00a0\u00bb ; \u00ab\u00a0#\u00a0\u00bb ; \u00ab\u00a07183233333343\u00a0\u00bb ; 0 )<br\/>Patternize ( \u00ab\u00a0RTL\u00a0\u00bb ; \u00ab\u00a0xxxx-xxxx-xxxx-####\u00a0\u00bb ; \u00ab\u00a0#\u00a0\u00bb ; \u00ab\u00a05288105898105340\u00a0\u00bb ; 0 )<\/p><p>718-323-3333<br\/>718-323-3333 x 343<br\/>xxxx-xxxx-xxxx-5340<\/p><h3 class=\"wp-block-heading\">IsServer<\/h3><h6 class=\"wp-block-heading\">D\u00e9finition de la fonction personnalis\u00e9e<\/h6><pre class=\"wp-block-code\"><code><strong>PatternCount( Get( ApplicationVersion ); \"Server\" ) &gt; <\/strong><\/code><\/pre><p><strong>Cette fonction d\u00e9termine, de mani\u00e8re bool\u00e9enne, si un script est ex\u00e9cut\u00e9 ou non sur le serveur FileMaker.<\/strong><\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"122\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/server.png\" alt=\"\" class=\"wp-image-7723\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/server.png 936w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/server-300x39.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/server-768x100.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/server-480x63.png 480w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/figure><p>La majorit\u00e9 des d\u00e9veloppeurs FileMaker ont un script OnOpen dans leur solution. Lorsque l&rsquo;on utilise Perform Script On Server (PSOS), il n&rsquo;est g\u00e9n\u00e9ralement pas n\u00e9cessaire d&rsquo;ex\u00e9cuter le script OnOpen complet. Pour contourner cela, au lieu de cr\u00e9er une instruction if et d&rsquo;\u00e9crire tout le code, nous pouvons appeler cette fonction personnalis\u00e9e.<\/p><p>Si vous souhaitez jouer avec ces fonctions polyvalentes, consultez notre fichier de d\u00e9monstration (en anglais uniquement) :<\/p><div class=\"wp-block-file\"><a id=\"wp-block-file--media-a5545c37-123f-42a3-a984-6ea8a0839b5c\" href=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/12\/CustomFunctions_Demo-File.fmp12-1.zip\">CustomFunctions_Demo-File.fmp12-1<\/a><a href=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/12\/CustomFunctions_Demo-File.fmp12-1.zip\" class=\"wp-block-file__button wp-element-button\" download=\"\" aria-describedby=\"wp-block-file--media-a5545c37-123f-42a3-a984-6ea8a0839b5c\">T\u00e9l\u00e9chargement<\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>Qu&rsquo;est-ce qu&rsquo;une fonction personnalis\u00e9e ? Les fonctions personnalis\u00e9es dans FileMaker sont des fonctions d\u00e9finies par le d\u00e9veloppeur qui peuvent \u00eatre r\u00e9utilis\u00e9es partout dans le fichier de base de donn\u00e9es dans lequel elles sont cr\u00e9\u00e9es. En tant que d\u00e9veloppeurs, nous pouvons nous retrouver \u00e0 \u00e9valuer un calcul plusieurs fois, ce qui est un bon signe pour &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.directimpactsolutions.com\/fr\/mes-5-principales-fonctions-personnalisees-filemaker\/\"> <span class=\"screen-reader-text\">Mes 5 principales fonctions personnalis\u00e9es FileMaker<\/span> Lire la suite >><\/a><\/p>\n","protected":false},"author":18,"featured_media":7732,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","footnotes":""},"categories":[34],"tags":[50,370],"class_list":["post-10897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-low-code","tag-filemaker-fr","tag-fonctions-personnalisees"],"uagb_featured_image_src":{"full":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited.png",837,471,false],"thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-150x150.png",150,150,true],"medium":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-300x169.png",300,169,true],"medium_large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-768x432.png",768,432,true],"large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited.png",837,471,false],"1536x1536":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited.png",837,471,false],"2048x2048":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited.png",837,471,false],"woocommerce_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-300x300.png",300,300,true],"woocommerce_single":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited.png",600,338,false],"woocommerce_gallery_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/age-1-edited-100x100.png",100,100,true]},"uagb_author_info":{"display_name":"Nicole Morales","author_link":"https:\/\/www.directimpactsolutions.com\/fr\/author\/nicole-morales\/"},"uagb_comment_info":0,"uagb_excerpt":"Qu&rsquo;est-ce qu&rsquo;une fonction personnalis\u00e9e ? Les fonctions personnalis\u00e9es dans FileMaker sont des fonctions d\u00e9finies par le d\u00e9veloppeur qui peuvent \u00eatre r\u00e9utilis\u00e9es partout dans le fichier de base de donn\u00e9es dans lequel elles sont cr\u00e9\u00e9es. En tant que d\u00e9veloppeurs, nous pouvons nous retrouver \u00e0 \u00e9valuer un calcul plusieurs fois, ce qui est un bon signe pour\u2026","_links":{"self":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/10897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/comments?post=10897"}],"version-history":[{"count":5,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/10897\/revisions"}],"predecessor-version":[{"id":21126,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/10897\/revisions\/21126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media\/7732"}],"wp:attachment":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=10897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/categories?post=10897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/tags?post=10897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}