Récemment, un de mes clients m’a demandé la possibilité de lui générer des fichiers Word personnalisés à partir de données de sa base Filemaker. J’ai donc cherché la possibilité de le faire, mais malheureusement, s’il est possible d’exporter des enregistrements de Filemaker vers Excel, il est actuellement impossible en natif d’exporter des éléments de Filemaker vers Microsoft Word. Il existe pourtant une astuce que je vais vous présenter ci-dessous.
Étape 1 : Créez votre fichier template au format rtf
Pour cela, rien de plus simple, créez votre fichier dans Microsoft Word, puis pensez bien à l’enregistrer au format Rich Text Document avec l’extension .rtf. Ce format développé par Microsoft a l’avantage d’être lu par tous les logiciels de traitements de texte et son contenu n’est autre qu’un ensemble de caractères sur lequel nous allons pouvoir faire des traitements.
C’est aussi lors de sa création que vous pouvez ajouter des variables que nous allons récupérer depuis la base Filemaker.
Dans notre exemple, nous mettons en variable les données du client qui sont dans l’entête du document en les « encadrant » par des pourcentages pour les retrouver facilement lors de la substitution de texte.
Étape 2 : Récupérer le contenu du template et l’intégrer dans la base Filemaker
Une fois votre fichier Rich Text Document créé avec Microsoft Word, il vous faut l’ouvrir avec un éditeur de texte (tel Notepad++ sur Windows ou TextWrangler sur macOS). Vous verrez alors votre document dans son encodage natif. Il vous suffit ensuite de copier tout le contenu de votre fichier dans une rubrique (ou une variable globale) pour qu’elle soit directement disponible dans Filemaker.
Étape 3 : Lancer le traitement
Pour terminer, il vous faut récupérer le contenu de la variable et faire vos substitutions :
Définir variable [ $result_docx ; Valeur: Substituer ( export::origin ; "%%CLIENT_NAME%%" ; "Emmanuel MACRON" ) ]
où $result_docx est votre variable temporaire que nous allons utiliser pendant nos substitutions et export::origin est le contenu de votre fichier rtf au format brut. Dans notre exemple, nous allons remplacer %%CLIENT_NAME%% dans notre fichier par Emmanuel MACRON
Définir variable [ $desktop_fm ; Valeur: "file:" & Obtenir( CheminBureau ) & "facture.rtf" ]
Pour définir le chemin de votre fichier en prenant bien l’extension de fichier rtf.
Définir rubrique [ export::docx ; DecoderBase64 ( CoderBase64 ( $result_docx ); "facture.rtf" ) ]
L’astuce est de décoder et encoder le contenu de votre fichier pour qu’il soit interprétable en rtf et pour l’affecter à une rubrique conteneur
Exporter contenu de rubrique [ export::docx ; “$desktop_fm” ; Ouvrir automatiquement ]
Vous pouvez exporter le contenu et l’ouvrir avec Microsoft Word.
Conclusion
Avantages | Inconvénients | |
|
|
Fichiers exemples
Télécharger le fichier rtf utilisé pour cet exemple : fm_exemple.rtf
Télécharger la base de données Filemaker Exemple : export_microsoft_word.fmp12
Bonjour,
Merci pour le tutoriel, vraiment c’est super. J’ai un problème avec les dates. Dans Filemaker la date est sous la forme longue « 24 décembre 2021 », or dans le fichier RTF la date sera 24/12/2021. Est-ce qu’il y a un moyen pour que la date soit longue dans le RTF.
Merci.
Bonjour et désolé pour la réponse tardive.
Je pense que pour avoir une date complète, il faut la générer. En effet FileMaker stocke la date au format JJ/MM/AAAA mais vous permet de l’afficher suivant votre envie. Par contre, vous ne pouvez pas l’exporter dans un autre format du type 24 décembre 2021.
Il faut donc « reconstruire » la date au format texte.
Julien
Bonjour,
Merci pour cette solution qui me parait super intéressante mais j’ai un soucis avec les accents. Aucun ne passe et je me retrouve avec des adresses du type : Général de Gaulle. Je suis sur Mac et FM19. Merci pour le coup de main.