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).
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
Approche | Principe | Avantages | Limites |
---|---|---|---|
Colonne Nombre « miroir » + Power Automate | 1. 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 Nombre | Saisir à 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 BI | Exporter 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
- 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. - 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. - 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ètreField=
dans l’URL correspond au nom interne. Les accents sont encodés (ex.Quant_x00e9_ite
pour « Quantité »). - 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 viacoalesce()
pour éviter les erreurs et stabiliser le calcul. - Arrondir/formatter
Si besoin, arrondissez :@{float(formatNumber(outputs('Calcul'), '0.00'))}
Adaptez0.00
au nombre de décimales de la colonne miroir. - É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. - Mettre à jour l’élément
Action SharePoint › Mettre à jour l’élément, renseignez l’ID de l’élément, puis affectezTotalHT_Miroir
àfloat(formatNumber(outputs('Calcul'), '0.00'))
. - Configurer les totaux
Dans la vue, ouvrez Colonnes › Totaux et choisissez Somme pourTotalHT_Miroir
. - 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
Besoin | Exemple « Calculé » | Expression Power Automate | Notes |
---|---|---|---|
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
Besoin | Possibilités natives | Alternatives |
---|---|---|
Déplacer une liste vers un autre site ou Team | Pas 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 As | Depuis 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
- Ouvrez la page d’accueil Lists et cliquez sur Nouvelle liste.
- Choisissez À partir d’une liste existante, sélectionnez la liste source et, si proposé, les colonnes à inclure.
- Choisissez le site d’hébergement et le nom de la nouvelle liste.
- 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 :
- Activez (si nécessaire) l’option de scripts personnalisés sur le site concerné.
- Ouvrez la liste en expérience classique > Paramètres > Enregistrer la liste comme modèle (inclure le contenu si la taille < 50 Mo).
- Téléchargez le fichier
.stp
et installez‑le dans la galerie de solutions du site cible. - 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)
- Dans la liste source, Exporter vers Excel (ou CSV).
- Nettoyez le fichier (en-têtes en première ligne, types corrects, pas de colonnes système).
- Créez une nouvelle liste À partir d’Excel et laissez l’assistant détecter les types.
- 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.
- 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.
- 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 ». - 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). - 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érifier | Pourquoi |
---|---|---|
Pré‑audit | Types de colonnes, noms internes, vues, totaux, formatages JSON, règles de validation | Éviter les surprises et planifier les équivalences |
Création | Décimales et formats des colonnes Nombre | Garantir la cohérence des calculs et des totaux |
Données | Lookups, Personne/Groupes, pièces jointes | Souvent non « copiables » en natif |
Calculs | Recréer colonnes Calculé ou flux miroir | Retrouver la somme en pied de colonne |
Validation | Test de 10–20 éléments représentatifs | Capturer les écarts tôt |
Performance | Index des colonnes filtrées, vues < 5 000 éléments | Rester 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": "='€ ' + 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).