Générer des Formulaires W-9 en PDF avec Power Automate et Smartsheet

Image de l'article
Auteur Par DocuGenerate

24 Juillet 2026

Introduction

Le formulaire W-9, « Request for Taxpayer Identification Number and Certification », est un formulaire de l’IRS que les entreprises aux États-Unis utilisent pour recueillir le nom légal, l’adresse et le numéro d’identification fiscale de leurs fournisseurs, freelances et prestataires indépendants avant de les payer. Les informations indiquées sur un formulaire W-9 servent ensuite à préparer les formulaires 1099 au moment de la déclaration fiscale, ce qui fait de la tenue de formulaires W-9 précis et uniformément mis en forme un élément important de tout processus d’intégration des fournisseurs. Les entreprises qui traitent avec un flux constant de nouveaux prestataires finissent souvent par gérer ces données dans une feuille de calcul ou un outil comme Smartsheet, ce qui en fait un candidat naturel pour l’automatisation.

Dans ce tutoriel, nous allons construire un flow Power Automate qui surveille une feuille Smartsheet pour détecter les nouvelles lignes et génère automatiquement un PDF W-9 rempli à l’aide de DocuGenerate. Chaque fois qu’un nouvel enregistrement de fournisseur est ajouté à la feuille, que ce soit par un membre de l’équipe qui le saisit directement ou par une importation depuis un autre système, le flow fusionne les données de cette ligne dans un modèle Word et enregistre le PDF final dans Azure File Storage. Le même schéma s’applique à tout document devant être généré automatiquement à partir de données de feuille de calcul, mais un formulaire fiscal est une bonne illustration car il implique un mélange de déclarants particuliers et professionnels, des champs conditionnels, et une mise en page qui doit rester précise.

Préparer le Modèle DocuGenerate

La première étape consiste à créer un modèle Word dans DocuGenerate qui reproduit la mise en page officielle du W-9. Nous sommes partis du formulaire W-9 de l’IRS et avons remplacé chaque champ à remplir par une balise de fusion, puis nous l’avons téléchargé en tant que nouveau modèle nommé Form W-9.

Modèle Form W-9 avec balises de fusion dans DocuGenerate

Le modèle contient 17 balises de fusion : firstName, lastName, businessName, taxClassification, exemptPayeeCode, fatcaCode, streetAddress, requesterName, requesterAddress, city, state, zipCode, accountNumber, ssn, ein, signature, et signatureDate. La plupart correspondent directement à une case étiquetée sur le formulaire. taxClassification correspond à la ligne « Other » de la section de classification fiscale fédérale et contient une courte description telle que « C Corporation » ou « Trust/estate », tandis que ssn et ein remplissent les deux cases de la Part I selon que le déclarant est un particulier ou une entité professionnelle. Vous pouvez télécharger le modèle Word utilisé dans ce tutoriel et l’adapter à votre propre mise en page.

Configurer la Source de Données dans Smartsheet

Une fois le modèle en place, l’étape suivante consiste à préparer la feuille qui servira de déclencheur pour notre flow. Dans Smartsheet, cliquez sur Create > Sheet > Table pour créer une nouvelle feuille, puis renommez-la Form W-9. Plutôt que de saisir des lignes d’exemple à la main, nous allons les importer depuis un fichier Excel en ouvrant le menu de la feuille et en sélectionnant Import. Gardez à l’esprit que l’importation remplace toutes les données existantes de la feuille par les données du fichier source.

Importation de données Excel dans la feuille Form W-9 de Smartsheet

Vous pouvez télécharger le fichier Excel d’exemple utilisé pour cette importation. Il contient 10 lignes correspondant aux 18 colonnes qui seront associées aux balises de fusion du modèle : une colonne Record ID (REC-001 à REC-010) suivie d’une colonne pour chaque champ du formulaire. Les données mélangent particuliers et entités professionnelles afin de tester les différentes branches du formulaire : six particuliers ou entrepreneurs individuels avec un SSN et sans EIN, et quatre entités (une LLC, une C Corp, un trust/succession et un partnership) avec un EIN et sans SSN. Une ligne a également les colonnes Exempt Payee Code et FATCA Code renseignées, puisque celles-ci ne s’appliquent que dans des cas spécifiques.

Données Form W-9 importées dans la table Smartsheet

Créer le Flow Power Automate

Une fois le modèle et la source de données prêts, nous pouvons construire le flow lui-même. Dans Power Automate, cliquez sur New flow > Automated cloud flow. Dans la boîte de dialogue Build an automated cloud flow, donnez au flow un nom tel que Form W-9, recherchez « Smartsheet » dans la liste des déclencheurs, et sélectionnez When a new row is created.

Sélection du déclencheur Smartsheet lors de la création d'un nouveau flow

Le flow que nous allons construire comporte trois étapes : un déclencheur Smartsheet qui se déclenche lorsqu’une ligne est ajoutée, une action DocuGenerate qui génère le PDF, et une action Azure File Storage qui l’enregistre. Configurons chacune d’entre elles à tour de rôle.

Configurer le Déclencheur Smartsheet

Le déclencheur When a new row is created nécessite une connexion à votre compte Smartsheet, que Power Automate vous invitera à créer la première fois que vous l’utilisez. Une fois connecté, définissez le paramètre Sheet Id sur la feuille Form W-9 que nous avons créée précédemment.

Configuration du paramètre Sheet Id sur le déclencheur Smartsheet

Ajouter l’Action Generate Document

Ensuite, cliquez sur le bouton + sous le déclencheur et recherchez « DocuGenerate » pour voir la liste des actions disponibles.

Recherche du connecteur DocuGenerate dans Power Automate

Sélectionnez Generate Document. La première fois que vous utilisez une action DocuGenerate dans votre environnement, vous serez invité à créer une connexion à l’aide de votre clé API DocuGenerate. Une fois connecté, définissez le champ Template sur le modèle Form W-9 créé dans DocuGenerate.

Pour le champ Data, nous avons besoin d’un objet JSON contenant les valeurs des 17 balises de fusion. Le déclencheur Smartsheet n’expose pas les cellules de la ligne par nom de colonne, seulement sous forme de tableau, donc chaque valeur doit être référencée par son index numérique. D’après l’ordre des colonnes lors de l’importation, la correspondance est la suivante : la colonne 0 est Record ID, la colonne 1 est SSN, la colonne 2 est First Name, la colonne 3 est Last Name, et ainsi de suite jusqu’à la colonne 17, qui est Signature Date. Nous avons construit le JSON avec les expressions concat et json :

json(concat(
  '{"firstName": "', triggerBody()?.cells?[2]?.value,
  '", "lastName": "', triggerBody()?.cells?[3]?.value,
  '", "businessName": "', triggerBody()?.cells?[4]?.value,
  '", "taxClassification": "', triggerBody()?.cells?[5]?.value,
  '", "exemptPayeeCode": "', triggerBody()?.cells?[6]?.value,
  '", "fatcaCode": "', triggerBody()?.cells?[7]?.value,
  '", "streetAddress": "', triggerBody()?.cells?[8]?.value,
  '", "requesterName": "', triggerBody()?.cells?[9]?.value,
  '", "requesterAddress": "', triggerBody()?.cells?[10]?.value,
  '", "city": "', triggerBody()?.cells?[11]?.value,
  '", "state": "', triggerBody()?.cells?[12]?.value,
  '", "zipCode": "', triggerBody()?.cells?[13]?.value,
  '", "accountNumber": "', triggerBody()?.cells?[14]?.value,
  '", "ssn": "', triggerBody()?.cells?[1]?.value,
  '", "ein": "', triggerBody()?.cells?[15]?.value,
  '", "signature": "', triggerBody()?.cells?[16]?.value,
  '", "signatureDate": "', triggerBody()?.cells?[17]?.value,
  '"}'
))

Les caractères ? sont des opérateurs conditionnels null : triggerBody()?.cells?[2]?.value lit la propriété value de la cellule à l’index 2, et renvoie null au lieu de générer une erreur à chaque endroit où cells ou cette cellule spécifique serait absente. Ceci est important ici car plusieurs colonnes, comme businessName ou ssn, sont volontairement vides sur de nombreuses lignes. La fonction concat externe assemble toutes ces valeurs en une seule chaîne JSON, et json() analyse cette chaîne pour obtenir l’objet attendu par le champ Data.

Configuration du champ Data sur l'action Generate Document

Pour le champ Name, nous avons utilisé une expression qui vérifie si la colonne Business Name (index 4) est renseignée et choisit le modèle de nommage approprié, en utilisant la même correspondance d’index que ci-dessus :

if(
  empty(triggerBody()?.cells?[4]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[2]?.value, ' ', triggerBody()?.cells?[3]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[4]?.value)
)

Cela produit un nom tel que « Form W-9 John Smith » pour un déclarant particulier, ou « Form W-9 Bluepeak Software LLC » pour un déclarant professionnel. Enfin, laissez le champ Format à sa valeur par défaut .pdf.

Configuration du champ Name sur l'action Generate Document

Enregistrer le Document dans Azure File Storage

Une fois le document généré, il existe de nombreuses façons de le livrer : l’envoyer par e-mail, l’ajouter à SharePoint ou OneDrive, le téléverser vers un bucket S3, etc. Pour ce tutoriel, nous allons l’enregistrer dans Azure File Storage. Cliquez sur le bouton + sous l’action Generate Document, recherchez « Create file », et sélectionnez l’action d’Azure File Storage.

Ajout de l'action Create file depuis Azure File Storage

Créez une connexion en fournissant un Connection name, votre Azure Storage account name or file endpoint, et votre Azure Storage Account Access Key, tous deux disponibles depuis votre compte de stockage dans le portail Azure.

Création d'une connexion à Azure File Storage

Une fois la connexion en place, configurez l’action Create file :

  • Folder path : /form-w-9, le dossier de destination dans le compte de stockage.
  • File name : outputs('Generate_Document')?['body/filename'], le nom de fichier du PDF généré.
  • File content : outputs('Generate_Document')?['body/document_uri'], l’URL du PDF généré.

Configuration des paramètres de l'action Create file

Tester le Flow

Pour tester le flow, cliquez sur Test sur la page du flow, sélectionnez Manually, puis cliquez à nouveau sur Test. Power Automate affichera un message vous demandant d’ajouter une ligne à la feuille sélectionnée pour déclencher l’exécution.

Test manuel du flow depuis Power Automate

Ajoutez une nouvelle ligne à la feuille Form W-9 dans Smartsheet avec un nouveau jeu de détails de fournisseur. Une fois le flow exécuté, le document généré apparaît dans le panneau Documents du modèle Form W-9 dans DocuGenerate, et le PDF est enregistré dans le dossier indiqué dans Azure File Storage. Vous pouvez voir un exemple du PDF généré ci-dessous.

Conclusion

Ce tutoriel a couvert l’ensemble du parcours, d’une ligne dans Smartsheet à un PDF W-9 prêt à être déposé, à l’aide d’un flow Power Automate sans aucun code personnalisé. Le déclencheur détecte les nouveaux enregistrements de fournisseurs au fur et à mesure qu’ils sont saisis, l’action Generate Document remplit la mise en page officielle du formulaire avec les données de cette ligne, et l’action Create file livre automatiquement le résultat vers Azure File Storage.

Ce même schéma en trois étapes (déclencheur, génération, livraison) fonctionne pour tout document récurrent que votre équipe produit à partir de données de feuille de calcul ou de tableau, qu’il s’agisse de documents d’intégration, de factures ou de formulaires de conformité. Comme les actions DocuGenerate sont disponibles dans l’ensemble de la Power Platform, vous pourriez tout aussi bien déclencher ce flow depuis un formulaire Power Apps ou une liste SharePoint au lieu d’une ligne Smartsheet, tout en conservant la même configuration de l’action Generate Document.

Ressources

Partager Cet Article