Microsoft Lists : sommer une colonne calculée et dupliquer/déplacer une liste (Power Automate, PnP, CLI)

Vous cherchez à additionner une colonne calculée dans Microsoft Lists et à déplacer/dupliquer des listes entre sites ? Voici des méthodes éprouvées, pas‑à‑pas, avec bonnes pratiques Power Automate, PnP/CLI et limites connues (mise à jour octobre 2025).

Sommaire

Afficher le total d’une colonne calculée dans Microsoft Lists

Problématique

Dans Microsoft Lists, l’option Totaux › Somme n’est proposée que pour les colonnes de type Nombre. Les colonnes de type Calculé ne peuvent pas être totalisées directement dans le pied de colonne, car leur résultat est évalué à la volée côté serveur et n’est pas persisté comme une valeur numérique de liste exploitable par les totaux.

Solutions et pistes de contournement

ApprochePrincipeAvantagesLimites
Colonne Nombre « miroir » + Power Automate1. Créer une colonne Nombre vide.
2. Déclencher un flux Power Automate à chaque création/modification d’élément ; le flux recalcule la formule et écrit la valeur dans la colonne Nombre.
3. Activer Totaux › Somme sur cette colonne.
• Automatisé, pas d’actions manuelles.
• Compatible avec les vues et l’export Excel.
• Facile à maintenir si la formule change : mise à jour dans le flux.
• Nécessite Power Automate (licence possible).
• Le total n’est pas instantané : dépend du déclenchement du flux.
Copie manuelle dans une colonne NombreSaisir à la main la même valeur que la colonne calculée.• Immédiat, aucun outil externe.• Risque d’erreur humaine.
• Non pérenne si la liste évolue souvent.
Extraction Excel / Power BIExporter la liste dans Excel ou la consulter via le connecteur Power BI, puis totaliser.• Puissant pour le reporting.
• Peut combiner plusieurs listes.
• Sort du cadre de Lists.
• Pas de total visible directement dans l’interface Lists.

À retenir : aujourd’hui (octobre 2025) Microsoft Lists ne permet pas de sommer une colonne calculée sans recourir à un flux ou à une solution externe. Des demandes d’évolution existent sur le centre de feedback Microsoft, mais aucune feuille de route officielle confirmée.

Mise en œuvre conseillée : « colonne Nombre miroir » + Power Automate (pas‑à‑pas)

Architecture minimale

  • Une colonne Calculé (ex. TotalHT) qui produit la valeur souhaitée.
  • Une colonne Nombre (ex. TotalHT_Miroir) configurée avec le nombre de décimales adéquat.
  • Un flux Cloud Power Automate avec le déclencheur « Lorsqu’un élément est créé ou modifié » (SharePoint/Microsoft Lists).

Étapes détaillées

  1. Préparer la colonne miroir
    Dans Paramètres de la liste › Créer une colonne, choisissez Nombre, nommez-la (ex. TotalHT_Miroir), définissez les décimales (ex. 2) et laissez la valeur par défaut vide.
  2. Créer le flux
    Dans Power Automate, créez un flux « Automatisé ». Déclencheur : SharePoint › Lorsqu’un élément est créé ou modifié. Renseignez l’URL du site et le nom de la liste.
  3. Récupérer les valeurs sources
    Ajoutez un Compose (ou des variables) pour extraire les colonnes nécessaires à votre calcul (ex. Quantite, PU, Remise). Utilisez les noms internes des colonnes. Astuce : trouver le nom interne Dans Paramètres de la liste › Colonnes, ouvrez la colonne : le paramètre Field= dans l’URL correspond au nom interne. Les accents sont encodés (ex. Quant_x00e9_ite pour « Quantité »).
  4. Reproduire la formule dans Power Automate
    Ajoutez une action Compose « Calcul » avec une expression équivalente à votre colonne calculée. Exemple pour =[Quantité]*[PU]*(1-[Remise]) : @{mul(mul(float(triggerOutputs()?['body/Quant_x00e9_ite']), float(triggerOutputs()?['body/PU'])), sub(1, coalesce(float(triggerOutputs()?['body/Remise']), 0)))} Ajoutez la gestion des null via coalesce() pour éviter les erreurs et stabiliser le calcul.
  5. Arrondir/formatter
    Si besoin, arrondissez : @{float(formatNumber(outputs('Calcul'), '0.00'))} Adaptez 0.00 au nombre de décimales de la colonne miroir.
  6. Éviter les boucles infinies
    Mettez un Condition avant la mise à jour : n’exécuter Update item que si la nouvelle valeur diffère de la valeur existante. @{not(equals(coalesce(triggerOutputs()?['body/TotalHT_Miroir'], -999999), float(formatNumber(outputs('Calcul'), '0.00'))))} Optionnel : activez le contrôle de concurrence (=1) sur le déclencheur et/ou l’« Apply to each » si vous traitez des lots.
  7. Mettre à jour l’élément
    Action SharePoint › Mettre à jour l’élément, renseignez l’ID de l’élément, puis affectez TotalHT_Miroir à float(formatNumber(outputs('Calcul'), '0.00')).
  8. Configurer les totaux
    Dans la vue, ouvrez Colonnes › Totaux et choisissez Somme pour TotalHT_Miroir.
  9. Tester et documenter
    Testez la création/modification d’un élément, vérifiez la somme en pied de colonne. Documentez la formule dans la description de la colonne et/ou un Wiki Teams.

Cartographie utile : Formules « Calculé » → Expressions Power Automate

BesoinExemple « Calculé »Expression Power AutomateNotes
Addition=[A]+[B]@{add(coalesce(float(triggerOutputs()?['body/A']),0), coalesce(float(triggerOutputs()?['body/B']),0))}Gérer les vides avec coalesce.
Multiplication=[Quantité]*[PU]@{mul(float(triggerOutputs()?['body/Quantite']), float(triggerOutputs()?['body/PU']))}Privilégier float() pour décimales.
IF/ELSE=IF([Actif], [PU], 0)@{if(equals(triggerOutputs()?['body/Actif'], true), float(triggerOutputs()?['body/PU']), 0)}Pour les choix Oui/Non.
Division sécurisée=[Total]/[Nombre]@{if(equals(coalesce(float(triggerOutputs()?['body/Nombre']),0), 0), 0, div(float(triggerOutputs()?['body/Total']), float(triggerOutputs()?['body/Nombre'])))}Évite division par zéro.
Date + N jours=[Date]+30@{addDays(triggerOutputs()?['body/Date'], 30)}Dates en UTC par défaut.
Année/Mois/Jour=YEAR([Date])@{formatDateTime(triggerOutputs()?['body/Date'],'yyyy')}Idem pour 'MM' et 'dd'.
Texte formaté=TEXT([Montant];"0,00")@{formatNumber(float(triggerOutputs()?['body/Montant']), '0.00')}Utilisez le Nombre pour la somme, pas du texte.

Conseils de performance

  • Grandes listes (> 5 000 éléments) : préférez un flux planifié nocturne qui recalcule uniquement les éléments modifiés depuis la veille (filtre OData sur Modified), plutôt qu’un déclenchement systématique.
  • Colonnes indexées : indexez les champs utilisés dans vos filtres pour rester dans les seuils de liste.
  • Observabilité : centralisez les erreurs dans une liste « Journal des calculs » (ID d’élément, message, date).

Formatage de colonne pour un affichage lisible

Si vous affichez la colonne miroir comme monnaie, vous pouvez utiliser un formatage JSON côté liste (sans impacter le calcul) :

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "span",
  "txtContent": "='€ ' + toLocaleString(@currentField, 'fr-FR', {minimumFractionDigits: 2, maximumFractionDigits: 2})"
}

Alternatives rapides si vous ne pouvez pas utiliser Power Automate

  • Copie manuelle : à réserver aux petites listes stables. Réduisez le risque en activant la validation de colonne, en verrouillant le format (décimales) et en auditant régulièrement.
  • Excel / Power BI : exportez et totalisez hors de Lists. Utile pour le reporting, moins pour un usage quotidien in‑app.

Déplacer ou dupliquer une liste existante

État des lieux (octobre 2025)

  • Il n’existe pas d’option native « Déplacer » une liste vers un autre site ou une autre équipe Teams.
  • La duplication est possible dans le même tenant via Créer une liste à partir d’une liste existante depuis la page d’accueil Lists.

Possibilités natives et alternatives

BesoinPossibilités nativesAlternatives
Déplacer une liste vers un autre site ou TeamPas d’option « Déplacer » directe.• Enregistrer la liste comme modèle (.stp) depuis SharePoint classique, puis l’installer dans la destination (limites : modèle < 50 Mo, pas pris en charge dans l’expérience Lists moderne).
• Export‑Import via Excel, puis recréer les formules, les validations et la mise en forme.
Copier / Save AsDepuis la page d’accueil Lists : Nouvelle liste › À partir d’une liste existante (lisible uniquement dans le même tenant).• Power Automate : création de la liste dans le site cible puis boucle sur les éléments.
• PnP PowerShell / CLI for Microsoft 365 pour cloner structure + contenu.

Procédure native : dupliquer depuis une liste existante

  1. Ouvrez la page d’accueil Lists et cliquez sur Nouvelle liste.
  2. Choisissez À partir d’une liste existante, sélectionnez la liste source et, si proposé, les colonnes à inclure.
  3. Choisissez le site d’hébergement et le nom de la nouvelle liste.
  4. Recréez les éléments non pris en charge : colonnes calculées (formules), règles de formatage JSON, vues personnalisées, totaux.

Procédure « modèle .stp » (héritage SharePoint classique)

Si votre tenant autorise encore l’enregistrement comme modèle :

  1. Activez (si nécessaire) l’option de scripts personnalisés sur le site concerné.
  2. Ouvrez la liste en expérience classique > Paramètres > Enregistrer la liste comme modèle (inclure le contenu si la taille < 50 Mo).
  3. Téléchargez le fichier .stp et installez‑le dans la galerie de solutions du site cible.
  4. Créez une nouvelle liste à partir de ce modèle, puis ajustez colonnes/vues/formatages.

Limites : modèle limité à 50 Mo, compatibilité incomplète avec des fonctionnalités modernes (formatage JSON, colonnes de type Personne multiples, etc.).

Procédure Excel (export/import)

  1. Dans la liste source, Exporter vers Excel (ou CSV).
  2. Nettoyez le fichier (en-têtes en première ligne, types corrects, pas de colonnes système).
  3. Créez une nouvelle liste À partir d’Excel et laissez l’assistant détecter les types.
  4. Réappliquez formules (colonne Calculé), validation, vues, totaux, formatage JSON.

Bon à savoir : l’import depuis Excel ne recrée pas les recherches (Lookup), métadonnées gérées, pièces jointes ou règles de formatage ; il s’agit d’une duplication de données et non d’un clonage fonctionnel complet.

Procédure Power Automate (structure + données)

Cette approche convient lorsque vous devez répéter des duplications et garder le contrôle sur la transformation des données.

  1. Créer la liste cible
    Deux options :
    • Action dédiée (si disponible dans votre environnement) pour créer une liste Microsoft Lists.
    • Ou action Envoyer une requête HTTP à SharePoint pour appeler l’API REST/Graph et créer la liste + colonnes.
  2. Cloner la structure
    Enchaînez des appels pour créer chaque colonne (types, décimales, valeurs de choix). Conservez une table de correspondance « nom source → nom cible ».
  3. Copier les éléments
    Get items (source) puis Create item (cible) dans un Apply to each. Gérez les pièces jointes via des appels spécifiques (Get attachments puis Add attachment).
  4. Rejouer les calculs
    Si la liste cible utilise la stratégie « colonne miroir », appliquez le même flux de calcul que décrit plus haut.

Procédure PnP PowerShell (recommandée pour les admins)

La Provisioning Engine PnP permet d’exporter la structure (et éventuellement le contenu) puis de la réappliquer ailleurs.

# 1) Connexion au site source
Connect-PnPOnline -Url "https://contoso.sharepoint.com/sites/source" -Interactive

# 2) Extraire le modèle de la liste (avec contenu si souhaité)

Get-PnPSiteTemplate -Out "liste.pnp" -Handlers Lists -ListsToExtract "NomDeLaListe" -IncludeContent

# 3) Connexion au site de destination

Connect-PnPOnline -Url "[https://contoso.sharepoint.com/sites/destination](https://contoso.sharepoint.com/sites/destination)" -Interactive

# 4) Appliquer le modèle

Invoke-PnPSiteTemplate -Path "liste.pnp" 

Forces : reproductible, scriptable, gère vues/colonnes/contenus. Points d’attention : validez les champs complexes (Lookups, Personne, métadonnées gérées) et le formatage JSON après l’application.

Procédure CLI for Microsoft 365 (cross‑platform)

# Connexion
m365 login

# Créer la liste de destination

m365 spo list add --webUrl [https://contoso.sharepoint.com/sites/destination](https://contoso.sharepoint.com/sites/destination) --title "Copie - Projets" --template GenericList

# Ajouter une colonne Nombre

m365 spo field add --webUrl [https://contoso.sharepoint.com/sites/destination](https://contoso.sharepoint.com/sites/destination) --listTitle "Copie - Projets" --type Number --title "Budget" --decimals 2

# Répliquer ensuite les autres colonnes...

# Copier les éléments (extrait simplifié)

m365 spo listitem list --webUrl [https://contoso.sharepoint.com/sites/source](https://contoso.sharepoint.com/sites/source) --listTitle "Projets" --output jsonc > source-items.json

# Puis bouclez sur le JSON pour m365 spo listitem add ...

Avantage : fonctionne sur Windows/macOS/Linux, idéal pour CI/CD. Limite : vous devez écrire la logique de transformation/mappage.

Checklist « avant/après » une duplication

ÉtapeÀ vérifierPourquoi
Pré‑auditTypes de colonnes, noms internes, vues, totaux, formatages JSON, règles de validationÉviter les surprises et planifier les équivalences
CréationDécimales et formats des colonnes NombreGarantir la cohérence des calculs et des totaux
DonnéesLookups, Personne/Groupes, pièces jointesSouvent non « copiables » en natif
CalculsRecréer colonnes Calculé ou flux miroirRetrouver la somme en pied de colonne
ValidationTest de 10–20 éléments représentatifsCapturer les écarts tôt
PerformanceIndex des colonnes filtrées, vues < 5 000 élémentsRester sous les seuils de liste

Informations complémentaires utiles

  • Limitation technique : dans SharePoint Online, une colonne calculée est évaluée côté serveur après l’enregistrement de l’élément ; son résultat n’est pas stocké sous forme de Nombre utilisable par les totaux.
  • Performance : évitez les flux qui déclenchent une recalc longue sur de très grandes listes (> 5 000 éléments) ; privilégiez alors un job planifié nocturne.
  • Bonne pratique : documentez la formule de la colonne calculée dans la description de la colonne ou dans un Wiki Teams pour faciliter la maintenance.
  • Suivre les évolutions : vérifiez régulièrement la Microsoft 365 Roadmap (fonction « Calculated column rollup in Lists ») et le Message Center de votre tenant pour voir si une prise en charge native des totaux est annoncée.

FAQ express

Pourquoi ne puis‑je pas simplement activer « Totaux › Somme » sur une colonne Calculé ?
Parce que le résultat n’est pas persistant ni garanti « Nombre » au sens de la fonction Totaux ; Lists ne sait pas sommer un calcul évalué à l’affichage.

La solution miroir nécessite‑t‑elle une licence payante ?
Selon votre plan Microsoft 365 et la consommation des exécutions, une licence Power Automate peut être requise. Vérifiez la politique de votre organisation.

Le flux va‑t‑il se déclencher sur sa propre mise à jour ?
Potentiellement oui. Évitez la boucle en testant la différence avant Update item et/ou en ajoutant une condition de déclenchement.

Que devient « TODAY() » des colonnes calculées ?
Il n’est pas supporté nativement dans les colonnes calculées pour des comparaisons dynamiques. Recréez la logique dans Power Automate (ex. utcNow(), addDays()).

Puis‑je déplacer une liste vers un autre tenant ?
Pas en un clic. Utilisez des scripts (PnP/CLI) et/ou des flux pour reconstruire la structure et migrer les données.


Verdict

  • Somme d’une colonne calculée : non pris en charge nativement. La voie la plus robuste est de répliquer le résultat dans une colonne Nombre via Power Automate, puis d’activer les Totaux.
  • Déplacement/duplication de listes : pas de « déplacer » natif. Dupliquez dans le tenant avec « À partir d’une liste existante », ou utilisez Excel/Power Automate/PnP/CLI pour des scénarios inter‑sites plus avancés.

Annexes – Exemples prêts à copier

Expression « calcul miroir » robuste (arrondi à 2 décimales)

@{float(formatNumber(
  if(equals(coalesce(float(triggerOutputs()?['body/Denominateur']), 0), 0),
     0,
     div(
       add(
         mul(coalesce(float(triggerOutputs()?['body/Quantite']), 0), coalesce(float(triggerOutputs()?['body/PU']), 0)),
         -mul(coalesce(float(triggerOutputs()?['body/Remise']), 0), mul(coalesce(float(triggerOutputs()?['body/Quantite']), 0), coalesce(float(triggerOutputs()?['body/PU']), 0)))
       ),
       coalesce(float(triggerOutputs()?['body/Denominateur']), 1)
     )
  ), '0.00'))}

OData – Ne traiter que les éléments modifiés hier

Modified ge datetime'@{formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-ddT00:00:00Z')}' and Modified lt datetime'@{formatDateTime(utcNow(), 'yyyy-MM-ddT00:00:00Z')}'

JSON de formatage – Afficher 2 décimales en €

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "span",
  "style": { "font-variant-numeric": "tabular-nums" },
  "txtContent": "='€&nbsp;' + toLocaleString(@currentField, 'fr-FR', {minimumFractionDigits: 2, maximumFractionDigits: 2})"
}

PnP – Exporter/Appliquer un modèle de liste

# Export (structure + contenu)
Connect-PnPOnline -Url "https://contoso.sharepoint.com/sites/source" -Interactive
Get-PnPSiteTemplate -Out "liste-source.pnp" -Handlers Lists -ListsToExtract "NomDeLaListe" -IncludeContent

# Appliquer

Connect-PnPOnline -Url "[https://contoso.sharepoint.com/sites/destination](https://contoso.sharepoint.com/sites/destination)" -Interactive
Invoke-PnPSiteTemplate -Path "liste-source.pnp" 

CLI – Création + ajout d’éléments (extrait)

# Création
m365 spo list add --webUrl https://contoso.sharepoint.com/sites/destination --title "Projets (copie)" --template GenericList

# Ajout d'un item

m365 spo listitem add --webUrl [https://contoso.sharepoint.com/sites/destination](https://contoso.sharepoint.com/sites/destination) --listTitle "Projets (copie)" --Title "Projet A" --PU 120 --Quantite 3 

Dernier conseil : standardisez votre approche (scripts PnP/CLI ou modèle de flux Power Automate) et stockez‑la dans un référentiel interne. Vous gagnerez un temps considérable lors des prochaines duplications et garantirez la cohérence (colonnes, décimales, totaux, vues).

Sommaire