Ajouter une colonne unique à incrémentation automatique à une liste SharePoint

Ajouter une colonne unique à incrémentation automatique à une liste SharePoint

Une demande récurrente dans SharePoint est de disposer d’un numéro d’ordre qui s’incrémente automatiquement pour chaque nouvel élément d’une liste. Par exemple, pour avoir un numéro de facture différent à chaque facture, ou pour des commandes, etc.

Le mécanisme proposé dans ce tutoriel ne nécessite aucun codage ou développement. Il utilise le navigateur et SharePoint Designer pour créer un flux de travail. Vous devez disposer des droits minimaux de conception.

Procédure de création du chrono

Cette procédure est détaillée dans l’article sur les colonnes-calculées.

La première étape est de créer une liste qui contiendra le chrono des autres listes. Elle sera nommée Chrono.

Outre la colonne Titre, cette liste personnalisée doit avoir 2 autres colonnes. Une colonne de type Nombre, intitulée NumeroSuivant et une colonne calculée, intitulée NumeroAvenir.

NumeroSuivant contiendra la valeur du prochain numéro à utiliser. NumeroAvenir est une simple incrémentation de NumeroSuivant. Elle permet de faire une addition qui ne peut pas être faite simplement dans le flux de travail. Cette colonne sera donc utilisée dans le flux de travail, comme NumeroSuivant.

La colonne NumeroAvenir a pour formule:

= NumeroSuivant+1

Le résultat renvoyé est de type Nombre.

Ensuite, ajoutez un nouvel élément qui servira pour la liste Commandes, qui sera bientôt créée. La numérotation des commandes commencent à 1000.

Comme la liste Chrono peut contenir plusieurs éléments, c’est grâce à la valeur du titre de l’élément (« Commandes » dans cet exemple) que vous retrouverez dans le flux de travail l’élément correspondant

Si vous le voulez, vous pouvez aussi ajouter un autre élément pour les factures:

Element Liste Factures afficher

Procédure de création de la liste Commandes

Créez une liste Commandes quelconque. Dans cet exemple, il s’agit d’une liste personnalisée mais cela fonctionne de la même façon avec une liste de type annonces ou une bibliothèque.

Si vous le voulez, vous pouvez aussi créer une liste Factures. La procédure est complètement symétrique pour la liste Factures. Pour des raisons de clarté, seule la procédure de la liste Commandes sera développée en entier.

Dans la liste Commandes, créez une colonne de type nombre, nommée NumeroOrdre.

Champ NumeroOrdre creer

Puis, créez une colonne calculée appelée NumeroCde avec la formule

=CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000 »;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))

Elle renvoie des données de type texte.

Champ NumeroCde creer

Pour vérifier le bon fonctionnement des formules, vous ajoutez un nouvel élément dans la liste. Pour l’instant, vous renseignez manuellement le champ NumeroOrdre. Lorsque le flux de travail sera terminé, ce champ sera alimenté automatiquement.

Element Liste Commandes alimenter

Le résultat donne:

Element Liste Commandes afficher

Création du flux de travail avec SharePoint Designer

Pour lancer SharePoint Designer, cliquez sur Actions du site puis Modifier dans SharePoint Designer. Patientez quelques secondes, le temps que SharePoint Designer récupère les informations du site SharePoint.

Dans SharePoint Designer, cliquez sur Flux de travail dans le menu de gauche.

Dans le menu du haut, cliquez sur Flux de travail de liste et sélectionnez la liste Commandes: La fenêtre Créer un flux de travail de liste s’ouvre.

Nommez votre flux de travail AutoInc puis cliquez sur le bouton OK.

Dans le menu du haut, cliquez sur Condition et ajoutez la condition Si le champ de l’élément actif est égal à la valeur.

Cette condition vous permet de tester que le champ NumeroOrdre est bien vide avant de l’alimenter.

Cliquez sur la première zone champ. Dans la liste déroulante qui s’ouvre, sélectionnez le champ NumeroOrdre.

Cliquez sur la zone est égal. Dans la liste déroulante, sélectionnez est inférieur ou égal à.

Ensuite, cliquez sur la zone valeur et tapez 0.

Champ NumeroCde tester

SharePoint Designer n’offre pas d’outils simples pour débuger l’écriture du flux de travail. Pour vous aider à vérifier le bon fonctionnement du flux de travail, vous allez directement consigner les événements du flux de travail dans son historique.

Pour cela, cliquez dans la zone intitulée Commencez à taper ou utiliser le groupe Insertion dans le ruban, puis dans le ruban du haut, cliquez sur le bouton Action. Dans la liste déroulante, sélectionnez l’action Consigner dans l’historique qui se trouve sous la section Actions principales.

Cliquez sur la zone intitulée ce message: une petite fenêtre s’ouvre. Directement dans la petite fenêtre, tapez le message NumeroOrdre est vide. Lorsque que le flux de travail s’exécutera vous pourrez ainsi vérifier son fonctionnement. Vous verrez comment concrètement plus tard.

Si NumeroOrdre n’est pas vide, il serait aussi intéressant de le savoir pour comprendre ce qui s’est passé au moment de l’exécution du flux de travail.

Pour le savoir, vous cliquez sur le bouton Branche Sinon-Si dans le ruban. Si vous le bouton Branche Sinon-Si est grisé, cliquez sous l’action que vous venez d’ajouter.

De manière générale, vous devez être très attentif à l’endroit où vous cliquez pour éviter des erreurs. Toutefois, il est possible de déplacer les actions quand elles ont été mal positionnées. Ce n’est pas le cas avec les conditions.

Sous la branche Else, vous allez ajouter l’événement que NumeroOrdre n’est pas vide dans l’historique.

Si vous cliquez à nouveau sur le bouton Action, vous remarquerez que les dernières actions sont regroupées sous la section Actions récentes (en haut de la liste). Ainsi, vous pouvez plus rapidement retrouver les actions que vous manipuler le plus.

Cliquez sur Consigner dans l’historique. Cliquez sur la zone intitulée ce message. Dans la petite fenêtre, tapez le message NumeroOrdre n’est pas vide.

Champ NumeroCde tester

La tâche suivante est facultative. Vous allez modifier le titre de l’étape de Étape 1 en Calcul.

Cliquez directement sur le sur le titre Étape 1: le texte s’affiche dans une petite fenêtre. Dans cette fenêtre, remplacer Étape 1 par Calcul.

Champ NumeroCde tester

Maintenant, il faut successivement mettre à jour la colonne NumeroOrdre de la liste Commandes puis la colonne NumeroSuivant de la liste Chrono.

Mise à jour de la colonne NumeroOrdre

Cliquez sous Consigner NumeroOrdre est vide dans l’historique du flux de travail. Ensuite, cliquez sur le bouton Action du ruban. Dans la liste déroulante, sélectionnez Mettre à jour l’élément de la liste sous la section Actions de liste.

Champ NumeroOrdre modifier

Dans cette action, cliquez sur la zone cette liste.

Champ NumeroOrdre modifier

Il faut indiquer à SharePoint Designer, la colonne à mettre à jour. Pour cela, cliquez sur le bouton Ajouter.

Champ NumeroOrdre modifier

Sous la zone Appliquer à ce champ, sélectionnez la colonne NumeroOrdre.

Pour spécifier la valeur à assigner à NumeroOrdre, cliquez sur le bouton fx.

La fenêtre qui s’ouvre va vous permettre d’indiquer à SharePoint Designer, la colonne qui sera utilisée pour alimenter NumeroOrdre.

Dans cette fenêtre, cliquez sur la liste déroulante en face de Source de données puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas. C’est normal, vous allez bientôt comprendre pourquoi.

Pour l’instant, en face de Champ de la source, sélectionnez NumeroSuivant.

Arrivé à ce stade, qu’avez-vous fait ?

1) Vous avez indiqué que la colonne NumeroOrdre (liste: Commandes) doit être mise à jour
2) Vous venez d’indiquer que la colonne NumeroOrdre sera mise à jour à partir de la colonne NumeroSuivant (liste: Chrono)
Vous pourriez penser que c’est suffisant et que la boite supplémentaire de dialogue supplémentaire est inutile.

Cependant, la liste Chrono peut avoir de nombreux éléments, il est donc nécessaire d’indiquer à SharePoint Designer quel élément de la liste Chrono doit être sélectionné. C’est l’objectif de la boite de dialogue supplémentaire.

La sélection se fait en indiquant un critère (rôle de la zone Champ) et une valeur (zone Valeur). Dans champ, vous indiquez Titre et dans valeur vous tapez Commandes.

« Commandes » est le nom de l’élément créé plus haut dans la liste Chrono.

Champ NumeroOrdre modifier

Cliquez sur le bouton OK.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs et que dans ce cas, seule la première sera utilisée. Vous savez qu’il n’y en a qu’une mais SharePoint Designer n’en sait rien.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Champ NumeroOrdre modifier

Cliquez sur le bouton OK: la fenêtre Mettre à jour les éléments de liste mise à jour apparait:

Champ NumeroOrdre modifier

Cliquez sur le bouton OK.

Champ NumeroOrdre modifier

Maintenant, il ne reste plus qu’à mettre à jour la colonne NumeroSuivant de la liste Chrono avec NumeroAvenir de la liste Chrono aussi.

Cliquez sous Mettre à jour l’élément dans Élément en cours. Ensuite, cliquez sur le bouton Action du ruban. Sélectionnez Mettre à jour l’élément de la liste sous la section Actions récentes (en haut).

Dans cette action, cliquez sur la zone cette liste.

En face de Liste, cliquez sur la liste déroulante puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas.

Cliquez sur le bouton Ajouter.

Sous la zone Appliquer à ce champ, sélectionnez la colonne NumeroSuivant.

Pour spécifier la valeur à assigner à NumeroSuivant, cliquez sur le bouton fx.

La fenêtre qui s’ouvre va vous permettre d’indiquer à SharePoint Designer, la colonne qui sera utilisée pour alimenter NumeroSuivant.

Dans cette fenêtre, cliquez sur la liste déroulante en face de Source de données puis sélectionnez Chrono. Au moment où vous sélectionnez Chrono, la fenêtre change d’aspect et une boite supplémentaire (« Rechercher l’élément de liste ») vient s’ajouter en bas.

Pour l’instant, en face de Champ de la source, sélectionnez NumeroAvenir.

Dans champ, vous indiquez Titre et dans valeur vous tapez Commandes. « Commandes » est le nom de l’élément créé plus haut dans la liste Chrono.

Cliquez sur le bouton OK.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs et que dans ce cas, seule la première sera utilisée.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Champ NumeroSuivant modifier

Cliquez sur le bouton OK: la fenêtre Mettre à jour les éléments de liste apparait partiellement mise à jour:

Champ NumeroSuivant modifier

Arrivé à ce stade, qu’avez-vous fait ?

1) Vous avez indiqué que la colonne NumeroSuivant (liste: Chrono) doit être mise à jour
2) Vous venez d’indiquer que la colonne NumeroSuivant sera mise à jour à partir de la colonne NumeroAvenir (liste: Chrono)
3) Vous avez même précisé le critère de sélection (Titre= »Commandes ») pour savoir de quel élément, la valeur de NumeroAvenir sera obtenue.

Cependant, vous devez aussi indiquer de quel élément la valeur de NumeroSuivant doit être mise à jour. C’est le rôle de la boite de dialogue Rechercher l’élément de liste.

En face de Champ, cliquez sur la liste déroulante et sélectionnez Titre. Dans valeur, tapez Commandes.

Une fenêtre s’affiche avec un message d’avertissement qui vous informe que la recherche définie peut renvoyer plusieurs valeurs et que dans ce cas, seule la première sera utilisée.

Cliquez sur le bouton Oui: la fenêtre Affectation de valeurs mise à jour apparait:

Champ NumeroSuivant modifier Cliquez sur le bouton OK.

Le flux de travail devient: Champ NumeroOrdre modifier

Dans le ruban, cliquez sur le bouton Enregistrer (ou faites CTRL+S).

Dans le fil d’Ariane:

Champ NumeroOrdre modifier

Cliquez sur AutoInc pour accéder aux paramètres du flux de travail.

Sous Options de démarrage, cochez la case Démarrer automatiquement le flux de travail lorsqu’un élément est créé.

Champ NumeroOrdre modifier

Cette option permettra un démarrage systématique du flux de travail, et donc une mise à jour automatique du NumeroOrdre.

Dans le ruban, cliquez sur le bouton Enregistrer (ou faites CTRL+S).

Ensuite, cliquez sur le bouton Publier.

Si vous ne publier pas votre workflow, il ne s’exécutera pas et il n’apparaîtra pas dans les Paramètres du flux de travail de la liste.

Patientez quelques instants.

Fermez SharePoint Designer puis retournez sur le navigateur.

Avec le navigateur, ouvrez la liste Commandes. Éventuellement, supprimez les éléments présents dans la liste.

Ajoutez un nouvel élément: ne renseignez pas le champ NumeroOrdre.

Element Liste Commandes alimenter

Cliquez sur le bouton Enregistrer pour valider votre saisie.

Pour rafraîchir l’affichage du navigateur, faites CTRL+F5 (n’oubliez pas CTRL !). Le CTRL permet de vider le cache du navigateur Internet Explorer.

Element Liste Commandes afficher

Selon la charge de votre serveur, vous le flux de travail sera soit en cours, soit terminé.

Faites F5 (ou CTRL+F5) pour rafraîchir l’écran.

Element Liste Commandes afficher

La colonne NumeroCde a bien été mise à jour.

A titre de vérification, cliquez sur la liste Chrono pour savoir les valeurs contenues:

Element Liste Chrono afficher

L’élément Commandes s’incrémente correctement tandis que l’élément Factures ne change pas.

Retournez sur la liste Commandes et saisissez 2 ou 3 commandes supplémentaires et vérifiez que le NumeroCde s’alimente correctement:

Element Liste Commandes afficher

Après avoir vérifié que tout fonctionne bien, dans un souci d’esthétique, vous pouvez modifier l’affichage pour cacher la colonne NumeroOrdre.

Vous pouvez aussi cliquer sur une valeur Terminé sous AutoInc. Sous la section Historique des flux de travail, vous verrez uniquement indiqué dans la colonne Description: NumeroOrdre est vide.

Vérifiez à nouveau Chrono:

Element Liste Chrono afficher

Maintenant, vous savez comment créer un flux de travail qui alimente automatiquement un numéro d’ordre sans développement

15 réponses sur “Ajouter une colonne unique à incrémentation automatique à une liste SharePoint”

  1. Bonjour,
    J’aimerais modifier un peu la formule en enlevant le « NUM » de la façon suivant :

    = CONCATENER(ANNEE([Modifié]); »-« ;GAUCHE(« 00000 »;5-(NBCAR(TEXTE([NumeroOrdre];0))));TEXTE([NumeroOrdre];0))

    Cepedant au moment de valider la création de la colonne j’ai une erreur de synthaxe.

    Merci de votre retour.

    1. Bonjour,

      J’ai repris votre formule : CONCATENER(ANNEE([Modifié]); »-« ;GAUCHE(« 00000 »;5-(NBCAR(TEXTE([NumeroOrdre];0))));TEXTE([NumeroOrdre];0))

      No problemo !

      Colonne à Increment automatique

        1. Non, aucune sauf s’il y a une erreur dans le nom de la colonne NumeroOrdre dans la liste.

          =CONCATENER(ANNEE(Modifié); »-« ;GAUCHE(« 00000 »;5-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))

          1. Non j’ai récupéré le NuméroOrdre qu’il me propose dans la liste des colonnes à insérer.
            Le type de données que je dois renvoyer est bien : Une seule ligne de texte?
            Le fait que mon SharePoint soit installer en anglais avec un patch francais ne doit pas poser de problème?
            Pour le coup je ne vois pas…

          2. NumeroOrdre est un nombre.

            NumeroCde est une valeur calculée qui renvoie Une seule ligne de texte.

            Faites moi parvenir une copie d’écran de l’erreur.

  2. Pour ce qui aurait eu le même problème que moi. Changer votre formule et mettez celle-ci a la palce :
    =CONCATENER(« NUM »;ANNEE(Modifier); »_ »;GAUCHE(« 000000 »;6-(NBCAR(NumeroOrdre)));NumeroOrdre)
    Voilà en espérant que ça pourras en aider certains 🙂

  3. Bonjour,
    J’ai un probleme avec la formule de la colonne NumeroCde ,
    Lorsque que je rentre la formule :
    NumeroCde=CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000″;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))
    et que je valide la colonne cela m’affiche un message d’erreur (je suis sous sharepoint 2013) Pouvez-vous m’aider ?
    merci D’avance 🙂

    1. Bonjour Damien, Vérifiez les caractères régionaux du serveur.

      Je viens de l’essayer sur une version SharePoint 2013 française (anglais + pack langue français) de base sans rencontrer de problème.

      Procédez par étape:

      NumeroCde=CONCATENER(« NUM »;2014; »-« ; »00″; »1023 »)
      puis
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;GAUCHE(« 000000″;2); »1023 »)
      puis
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;GAUCHE(« 000000 »;6-(NBCAR(« 1023″))); »1023 »)
      puis
      NumeroCde=CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000 »;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))

      Tenez-moi au courant. Merci.

      1. RE,
        Désoler de répondre avec un peu de retard(j’étais en pause déjeuner), pour l’adresse mail cela devrait être bon maintenant (j’avais mis .fr au lieu de .com), et voici l’erreur reçus :
        La formule contient une erreur de syntaxe ou n’est pas prise en charge.

  4. C’est excellent la manière dont vous avez expliqué le code. Seulement si vous pouvez nous traduire ce code en c#, car nous développons des applications en c#.

  5. Bonjour

    Est ce possible de savoir exactement ce que fait la fonction suivante et les sous fonctions.

    =CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000 »;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0)) j’essaye de reprendre l’exercice , je suis aussi un acquereur de votre livre Travaux pratiques corriges pour contributeurs , juste vous dire c’est vraiment bien explique,

    Merci de bien vouloir me revenir la dessus.

    Merci

    1. Explication des données

      NumeroOrdre est un entier qui contient un nombre : 1, 25, 307, 1048, etc.
      Modifié est la date de dernière modification : 25/02/2014, etc.

      Explication des fonctions

      TEXTE(NumeroOrdre,0) transforme NumeroOrdre en chaine de caractères, sans virgule.
      NBCAR(TEXTE(NumeroOrdre,0)) calcule le nombre de caractères de la chaine.
      GAUCHE(« 000000 »;N) tronque la chaine « 000000 » à N caractères.
      si N vaut 2, cela revient à tronquer la chaîne « 000000 » à « 00 ». Si N vaut 4, la chaîne « 000000 » est tronquée à « 0000 ».
      N=6-(NBCAR(TEXTE(NumeroOrdre,0))) calcule le nombre caractères à tronquer sur « 000000 ». Comme « 000000 » a 6 caractères, le nombre de caractères est obtenu par soustraction à 6 du nombre de caractères de NumeroOrdre.
      ANNEE(Modifié) retourne uniquement l’année de la date de modification de l’élément.
      CONCATENER concatène tout ça 🙂

      Exemple avec une transformation pas à pas

      Modifié = 25/02/2014
      ANNEE(25/02/2014)=2014

      NumeroOrdre = 1023
      TEXTE(1023,0)= »1023″
      NBCAR(« 1023 »)=4

      NumeroCde=CONCATENER(« NUM »;ANNEE(Modifié); »-« ;GAUCHE(« 000000 »;6-(NBCAR(TEXTE(NumeroOrdre;0))));TEXTE(NumeroOrdre;0))
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;GAUCHE(« 000000 »;6-(NBCAR(« 1023 »)));« 1023 »)
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;GAUCHE(« 000000 »;6-(4));« 1023 »)
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;GAUCHE(« 000000 »;2);« 1023 »)
      NumeroCde=CONCATENER(« NUM »;2014; »-« ;« 00 »;« 1023 »)
      NumeroCde=« NUM2014-001023 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *