Personnaliser un modèle de formulaire à l'aide d'un script

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Si vous avez l'habitude d'écrire des scripts, vous pouvez ajouter un script à votre modèle de formulaire Microsoft Office InfoPath en utilisant les langages de script Microsoft JScript ou Microsoft Visual Basic Scripting Edition (VBScript). L'ajout d'un script vous permet de personnaliser votre modèle de formulaire de manière plus poussée qu'avec les règles, les formules, la validation de données ou la mise en forme conditionnelle. Par exemple, vous pouvez ajouter un script qui crée et envoie un message électronique lorsqu'un utilisateur passe d'une vue à l'autre dans un formulaire basé sur votre modèle de formulaire. Vous pouvez configurer un modèle de formulaire de manière à créer et envoyer un message électronique uniquement en utilisant un script.

Contenu de cet article

Vue d’ensemble

Considérations relatives à la compatibilité

Définir le langage de script pour un modèle de formulaire

Afficher un message chaque fois qu’un événement se produit

Ajouter un script qui s’exécute lorsqu’un utilisateur enregistre les données du formulaire

Ajouter un script qui s’exécute lorsqu’un utilisateur envoie les données du formulaire

Ajouter un script qui s’exécute lorsqu’un utilisateur clique sur un bouton

Ajouter un script qui s’exécute lors de la fusionnent de formulaires existants

Ajouter un script pour mettre à jour les formulaires existants

Ajouter un script pour d’autres événements

Présentation

Vous pouvez personnaliser votre modèle de formulaire InfoPath en utilisant des règles, des formules, la validation de données et la mise en forme conditionnelle. Bien que ces fonctionnalités soient très souples et permettent de gérer toute une variété de tâches, certaines tâches dépassent les possibilités offertes par ces fonctionnalités. Par exemple, vous ne pouvez pas utiliser les règles pour envoyer un message électronique lorsqu'un utilisateur entre une valeur dans la zone de texte d'un formulaire. Si vous avez besoin de personnaliser votre modèle de formulaire au-delà des possibilités offertes par ces fonctionnalités et que vous avez l'habitude d'écrire des scripts à l'aide du langage de script JScript ou VBScript, vous pouvez ajouter un script qui s'exécute lorsqu'un utilisateur ouvre un nouveau formulaire ou modifie un formulaire existant basé sur votre modèle de formulaire.

Lorsque vous ajoutez un script à un modèle de formulaire, InfoPath lance Microsoft Script Editor (MSE), qui vous permet d'ajouter, de modifier et de déboguer le script d'un modèle de formulaire et place le curseur sur l'événement que vous avez choisi. InfoPath ajoute automatiquement un gestionnaire d'événements au script. Un gestionnaire d'événements est le code de fonction d'un modèle de formulaire InfoPath qui répond à l'action d'un utilisateur ou à une modification des données XML d'un formulaire. Par exemple, si vous souhaitez que vos utilisateurs enregistrent leurs formulaires sur plusieurs emplacements réseau, vous pouvez ajouter un script au gestionnaire d'événements OnSaveRequest. Lorsque vous ajoutez un script qui doit s'exécuter lorsque l'utilisateur enregistre un formulaire basé sur votre modèle de formulaire, InfoPath lance l'éditeur de script et ajoute l'un des codes suivants au script.

Remarque : Le code ajouté par InfoPath dépend du langage de script que vous avez choisi.

JScript

//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}

VBScript

'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub

Vous pouvez alors ajouter un code aux emplacements appropriés du gestionnaire d'événements qui enregistre le formulaire sur les différents emplacements réseau. Lorsqu'un utilisateur enregistre un formulaire basé sur ce modèle de document, InfoPath exécute le code dans le gestionnaire d'événements OnSaveRequest.

Remarque : Cet article offre une présentation détaillée de la création de scripts dans un modèle de formulaire. Pour en savoir plus sur Microsoft Script Editor et sur les objets, méthodes, événements et propriétés spécifiques utilisés dans InfoPath, consultez le Guide de référence du développeur d'InfoPath.

InfoPath ajoute automatiquement des gestionnaires d'événements pour tous les événements suivants sauf un.

Event handler

Description

Steps for creating

OnAfterChange

This event runs after a user changes the value in the specified control bound to a field. For example, you can display a custom HTML task pane after a user selects an item in a list box control. This event runs after the OnValidate event.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Change Event.

OnAfterImport

This event runs after the user successfully merges several forms into one form.

Manually add the OnAfterImport event handler declaration directly to the script file by using MSE. This event handler cannot be created in design mode.

OnBeforeChange

This event runs after a user changes the value in a control and before the value is added to the specified field bound to that control. For example, you can prevent a user from adding an additional row before filling out the last row in a repeating table.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On Before Change Event.

OnClick

This event runs when a user clicks a button associated with this event. This event is available after you add a button to the form template. For example, you can perform a complex calculation by using the values in fields in the main data source when a user clicks the button.

Double-click the button control and then on the General tab of the Button Properties dialog box, click Edit Form Code.

OnContextChange

This event runs when the focus changes in the form. For example, this event runs when a user navigates from a text box to a date picker, or when a user switches views. This event occurs after all other events have occurred.

On the Tools menu, point to Programming, and then click On Context Change Event.

OnLoad

This event runs whenever a user creates a new form or opens an existing form based on your form template. For example, you can copy a list of items from a secondary data source to the main data source when a user opens the form.

On the Tools menu, point to Programming, and then click On Load Event.

OnMergeRequest

This event runs when forms based on your form template are merged. For example, you can display the number of forms that were merged to give a user a status during the merge operation.

On the Tools menu, click Form Options. In the Category list, click Advanced. Under Merge forms, select the Merge using custom code check box, and then click Edit.

OnSaveRequest

This event runs when a user saves a form based on your form template. For example, you can save the form based on this form template to more than one location when a user saves the form. InfoPath adds two additional lines of code to this event: a line that saves the form and another line that tells you if InfoPath successfully saved the form.

On the Tools menu, click Form Options. In the Category list, click Open and Save. Under Save behavior, select the Save using custom code check box, and then click Edit.

OnSign

This event runs when a user applies a digital signature to a form. For example, you can add additional data to the digital signature of an expense report form when a user signs it.

On the Tools menu, point to Programming, and then click On Sign Event.

OnSubmitRequest

This event runs when a user submits his or her form data. For example, you can submit the form data to a secure Web service when the user clicks Submit on the File menu. Since InfoPath does not support a data connection to a secure Web service, you need to add a custom data connection that works with your secure Web service.

On the Tools menu, click Submit Options. Select the Allow users to submit this form check box, click Perform custom action using Code, and then click Edit Code.

OnSwitchView

This event runs when a user opens a form based on your form template or switches to another view in the form. For example, when a user switches to a specific view, you can create an e-mail message that contains data from the fields in the form's main data source.

On the Tools menu, click Programming, and then click On Switch View Event.

OnValidate

This event runs when a user changes the value in a control bound to a field. For example, when the user changes the value in a specific control, you can calculate a new value for another control by using the number that the user entered and a number that is in the script. This event occurs after the OnBeforeChange event handler runs.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Validate Event.

OnVersionUpgrade

This event runs when a user opens an existing form and the version number of the form template used by the existing form is older than the version number of the form template in the publish location. When a user opens an existing form, InfoPath checks the version number of the form template associated with the existing form. If the form template has a newer version number, InfoPath runs the OnVersion event handler when the user opens the existing form. For example, imagine that you add a new field to an existing form template and republish it, and you want the new field to be added to the main data source if a user opens an existing form. This event adds the new field to the main data source when a user opens an existing form.

On the Tools menu, click Form Options. In the Category list, click Versioning. In the On version upgrade list, click Use custom event, and then click Edit.

Haut de la Page

Considérations en matière de compatibilité

Vous ne pouvez pas ajouter un script à un modèle de formulaire compatible avec les navigateurs web. Vous pouvez uniquement ajouter un script à un modèle de formulaire dont les formulaires seront remplis dans. Vous pouvez uniquement personnaliser un modèle de formulaire compatible avec le navigateur à l'aide d'un code managé.

Haut de la Page

Définir le langage de script pour un modèle de formulaire

Pour personnaliser un modèle de formulaire en utilisant le script, vous pouvez utiliser Microsoft JScript ou Microsoft Visual Basic Scripting Edition (VBScript). Par défaut, InfoPath est configuré pour ajouter un script à l’aide de JScript. Si votre modèle de formulaire ne contient pas de script ou de code managé et que vous préférez utiliser VBScript comme langage de script, vous pouvez modifier le langage de script pour votre modèle de formulaire à VBScript. Vous ne pouvez pas utiliser les deux langages de script dans le même modèle de formulaire.

Si le modèle de formulaire contient déjà un script dans une langue et que vous voulez utiliser l’autre langue, vous devez enregistrer le script existant afin que vous pouvez convertir le script à l’autre langue, supprimer le script dans le modèle de formulaire dans la boîte de dialogue Options de formulaire, puis ajoutez le script converti le modèle de formulaire. InfoPath Impossible de convertir les scripts une nouvelle langue d’écriture de script. Modifier le langage de script dans la boîte de dialogue Options de formulaire n’affecte que ce modèle de formulaire. Autres modèles de formulaire auront JScript comme langage de script par défaut.

  1. Dans le menu Outils, cliquez sur Options de formulaire.

  2. Dans la liste catégorie, dans la boîte de dialogue Options de formulaire, cliquez sur programmation.

  3. Dans la liste langage de code de modèle de formulaire, sous le langage de programmation, cliquez sur VBScript.

    Remarques : 

    • Après avoir défini le langage de script et créer un ou plusieurs gestionnaires d’événements pour un modèle de formulaire, vous ne pouvez pas modifier le langage de script du modèle de formulaire.

    • Si vous avez installé Microsoft Visual Studio 2005 Tools for Applications, la langue par défaut est Microsoft Visual Basic .NET. Vous pouvez toujours utiliser cette procédure pour changer la langue d’écriture de script VBScript.

Haut de la Page

Afficher un message à chaque fois qu'un événement survient

Si vous souhaitez savoir quel gestionnaire d'événements s'exécute en réponse à une action ou un autre événement, vous pouvez ajouter un code temporaire pour afficher une zone de message à chaque fois que le gestionnaire d'événements s'exécute. Vous devez utiliser ce code uniquement pour savoir quand un gestionnaire d'événements s'exécute. Après avoir ajouté ce code, vous pouvez utiliser l'aperçu pour afficher un formulaire basé sur ce modèle de formulaire ou pour publier le modèle de formulaire puis en créer un nouveau. Certains gestionnaires d'événements s'exécutent uniquement si vous créez un formulaire après avoir publié le modèle de formulaire. Vous pouvez alors effectuer une action dont vous pensez qu'elle lancera le gestionnaire d'événements. Lorsque le gestionnaire d'événements s'exécute, une zone de message s'affiche.

Après avoir déterminé quelles actions ou quels événements exécutaient le gestionnaire d'événements, supprimez le code puis reprenez la création du modèle de formulaire. Si vous ne supprimez pas ce code et que vous publiez le modèle de formulaire, vos utilisateurs verront cette zone de message lorsque le gestionnaire d'événements s'exécutera.

  1. Ajouter votre gestionnaire d'événements.

  2. Pour ajouter du code dans JScript, tapez XDocument.UI.Alert ( » de l’événement événement nom venez d’exécuter ») ; Remplacez le nom de votre gestionnaire d’événements. Par exemple, si vous ajoutez ce code au gestionnaire d’événements OnValidate , vous taperez XDocument.UI.Alert (« The OnValidate Gestionnaire d’événements venez d’exécuter ») ;

  3. Pour ajouter du code dans VBScript, tapez XDocument.UI.Alert ( » de l’événement événement nom venez d’exécuter ») , par exemple, si vous ajoutez ce code au gestionnaire d’événements OnSaveRequest , vous taperez XDocument.UI.Alert (« The OnSaveRequest Gestionnaire d’événements venez d’exécuter »)

  4. Pour tester le code, cliquez sur Aperçu dans le menu Fichier ou appuyez sur CTRL+Maj+B, puis effectuez une action d'utilisateur susceptible de lancer l'événement. Lorsque l'événement correspondant à la ligne de code survient, une zone de message doit afficher votre message.

    Remarque : Pour certains événements, vous devrez publier le modèle de formulaire puis créer un formulaire basé sur ce modèle avant de pouvoir effectuer une action d'utilisateur pour lancer l'événement.

  5. Avant de publier le modèle de formulaire et de permettre à vos utilisateurs de remplir des formulaires basés sur ce modèle de formulaire, effacez le code que vous avez utilisé pour afficher la zone de message.

Haut de la Page

Ajouter un script qui s'exécute lorsque l'utilisateur enregistre les données du formulaire

  1. Dans le menu Outils, cliquez sur Options de formulaire.

  2. Dans la liste Catégorie, dans la boîte de dialogue Options de formulaire, cliquez sur Ouvrir et enregistrer.

  3. Sous Comportement à l'enregistrement, activez la case à cocher Enregistrer au moyen d'un code personnalisé, puis cliquez sur Modifier. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements OnSaveRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSaveRequest(eventObj)
    {
    // Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation();
    // Write the code to be run after saving here.
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSaveRequest(eventObj)
    ' Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation
    ' Write the code to be run after saving here.
    eventObj.ReturnStatus = True
    End Sub
  4. Effectuez l'une des opérations suivantes ou les deux :

    • Pour ajouter un script qui s'exécute avant qu'InfoPath enregistre le formulaire, remplacez le commentaire Write the code to be run before saving here.par votre code.

    • Pour ajouter un script qui s'exécute après qu'InfoPath ait enregistré le formulaire, remplacez le commentaire Write the code to be run after saving here. par votre code.

  5. Pour tester vos modifications, cliquez sur Aperçu dans la barre d’outils Standard, ou appuyez sur Ctrl+Maj+B.

    Remarque : Si le gestionnaire d'événements s'exécute seulement après la création d'un formulaire basé sur votre modèle de formulaire, publiez le modèle de formulaire en cliquant sur Publier dans le menu Fichier, puis terminez l'Assistant de publication. Après avoir publié le modèle de formulaire, créez un formulaire, puis effectuez une action pour lancer le gestionnaire d'événements.

Haut de la Page

Ajouter un script qui s'exécute lorsqu'un utilisateur envoie le formulaire de données

  1. Dans le menu Outils, cliquez sur Options d’envoi.

  2. Dans la boîte de dialogue Options d’envoi, activez la case à cocher Autoriser les utilisateurs à envoyer ce formulaire.

  3. Cliquez sur Effectuer une action personnalisée à l'aide d'un code, puis cliquez sur Modifier le code. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements OnSubmitRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSubmitRequest(eventObj)
    {
    // If the submit operation is successful, set
    // eventObj.ReturnStatus = true;
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSubmitRequest(eventObj)
    ' If the submit operation is successful, set
    ' eventObj.ReturnStatus = True
    ' Write your code here
    End Sub
  4. Remplacez le commentaire If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here par votre code.

  5. Pour tester vos modifications, cliquez sur Aperçu dans la barre d’outils Standard, ou appuyez sur Ctrl+Maj+B.

Haut de la Page

Ajouter un script qui s'exécute lorsqu'un utilisateur clique sur un bouton

  1. Ajoutez un nouveau bouton sur une vue du modèle de formulaire, puis double-cliquez sur ce bouton.

    Remarque : Si vous ajoutez un script à un bouton existant, double-cliquez sur le bouton existant.

  2. Cliquez sur l'onglet Général.

  3. Cliquez sur Modifier le code du formulaire. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements OnClick pour ce bouton.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function Button Name::OnClick(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub Button Name_OnClick(eventObj)
    ' Write your code here
    End Sub
  4. Remplacez le commentaire Write your code here par votre code.

  5. Pour tester vos modifications, cliquez sur Aperçu dans la barre d’outils Standard, ou appuyez sur Ctrl+Maj+B.

Haut de la Page

Ajouter un script qui s'exécute lorsque des formulaires existants sont fusionnés

  1. Dans le menu Outils, cliquez sur Options de formulaire.

  2. Dans la liste Catégorie, dans la boîte de dialogue Options de formulaire, cliquez sur Avancées.

  3. Sous Fusionner les formulaires, activez la case à cocher Activer la fusion de formulaires.

  4. Activez la case à cocher Fusionner à l'aide d'un code personnalisé, puis cliquez sur Modifier. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements OnMergeRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnMergeRequest(eventObj)
    {
    // Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM);
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnMergeRequest(eventObj)
    ' Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM)
    eventObj.ReturnStatus = True
    End Sub
  5. Remplacez le commentaire Write the code that handles each form being merged here. par votre code.

  6. Pour tester le code dans cet événement, publiez le modèle de formulaire, créez plusieurs formulaires basés sur ce modèle de formulaire, puis fusionnez les modèles de formulaires.

    Remarque : Vous trouverez des liens vers des informations supplémentaires sur la publication de votre modèle de formulaire dans la section Voir aussi.

Haut de la Page

Ajouter un script pour mettre à jour les formulaires existants

Si vous avez mis à jour un modèle de formulaire publié précédemment et que vous souhaitez mettre à jour les formulaires existants basés sur ce modèle de formulaire, vous pouvez ajouter au modèle de formulaire mis à jour un script qui s'exécute lorsqu'un utilisateur ouvre l'un des formulaires existants. Lorsqu'un utilisateur ouvre un formulaire existant, InfoPath contrôle le numéro de version du modèle de formulaire associé à l'emplacement de publication. Si le numéro de version du modèle de formulaire à l'emplacement de publication est plus récent que le numéro de version du formulaire existant, indiquant qu'il a été mis à jour, InfoPath exécute le code dans cet événement pour mettre à jour le formulaire existant.

  1. Dans le menu Outils, cliquez sur Options de formulaire.

  2. Dans la liste Catégorie, dans la boîte de dialogue Options de formulaire, cliquez sur Suivi de version.

  3. Dans la liste Mise à niveau de la version, cliquez sur Utiliser un événement personnalisé, puis sur Modifier. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements OnVersionUpgrade.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnVersionUpgrade(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnVersionUpgrade(eventObj)
    ' Write your code here
    End Sub
  4. Remplacez le commentaire Write your code here par votre code.

  5. Pour tester le code dans cet événement, publiez le modèle de formulaire, créez plusieurs formulaires basés sur ce modèle, modifiez et publiez une version mise à jour du modèle de formulaire, puis ouvrez un formulaire existant basé sur la version plus ancienne de ce modèle de formulaire.

    Remarque : Vous trouverez des liens vers des informations supplémentaires sur la publication de votre modèle de formulaire dans la section Voir aussi.

Haut de la Page

Ajouter un script pour d'autres événements

Cette procédure peut être utilisée pour ajouter les gestionnaires d'événements suivants à votre modèle de formulaire :

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • Dans le menu Outils, pointez sur Programmation, puis cliquez sur l'événement à ajouter au gestionnaire d'événements. Microsoft Script Editor démarre, avec le curseur placé sur le gestionnaire d'événements que vous avez sélectionné.

  • Remplacez le commentaire Write your code here par votre code.

Haut de la Page

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×