Calcul de données dans une liste SharePoint selon conditions

  • Calcul de données dans une liste SharePoint selon conditions

    Posté par Hugotr35 sur 23 février 2023 à 9h07

    Bonjour à toutes et tous,

    J’espère que vous allez bien, j’ai encore besoin de vos lumières, en effet, je souhaite connaitre la somme des lignes d’un SharePoint qui correspondent à certaines conditions. Types : La somme de toutes les lignes ayant dans la colonne ‘STATUT’ la valeur “Traité”. Sauf que j’ai l’impression de que ma formule nécessite plus de complexité, voici l’alerte avec ma formule :

    Avez vous une idée ?

    Au plaisir de vous lire ,

    PostID=MmJiKoXzqThqmpO

    R3dKap a répondu Il y a 9 mois, 2 semaines 1 Membre · 4 Réponses
  • 4 Réponses
  • R3dKap

    Membre
    23 février 2023 à 9h17

    Hugotr35 cet message d’avertissement apparaît car tu utilises la fonction Sum() sur une source de données (SharePoint) qui n’est pas capable de faire lui-même la somme (Power Apps ne peut pas déléguer cette fonction à SharePoint). Power Apps est donc obligé de récupérer les données “localement” avant de faire la somme “localement”. Or Power Apps ne pouvant récupérer plus de 2000 lignes d’une source de données, il te prévient que si tu as plus de 2000 lignes dans cette source de données, il ne fera la somme que sur les 2000 premières lignes et ignorera les lignes suivantes. Ca peut être problématique…

    Donc, la première question c’est : est-ce que tu auras un jour plus de 2000 lignes dans ta liste SharePoint ?

    Si ta réponse est non, alors il te suffit de charger ta liste dans une collection locale et de faire la somme sur cette collection.

    Pour le chargement de ta liste en collection, tu peux le faire dans le OnVisible de l’écran de démarrage de ton application :

    ClearCollect(colToDoList; TODOLIST_1);;

    Ensuite, tu peux faire ta somme là où tu en as besoin :

    Sum(colToDoList; "Traité" in STATUT && Label16_112.Text in Title)

    Si tu peux avoir plus de 2000 lignes dans ta liste, alors c’est un peu plus compliqué… Il va falloir filtrer ta source de données pour réduire le nombre de lignes sur lesquelles faire la somme.

    CommentID=GHzDKXm6p9iBIaJ, PostID=MmJiKoXzqThqmpO

  • Hugotr35

    Membre
    23 février 2023 à 10h57

    Top merci beaucoup pour cette réactivité !

    CommentID=xZpuo1v5k3pBuQX, PostID=MmJiKoXzqThqmpO

  • Geoffroy

    Membre
    23 février 2023 à 12h21

    Bonjour R3dKap

    Je rebondis sur cette question pour demander quelle est la différence entre la fonction Sum et Countif dans le cas présent, en terme de performances par exemple.

    CommentID=eKFKMQDgv3TnAcl, PostID=MmJiKoXzqThqmpO

  • R3dKap

    Membre
    23 février 2023 à 13h49

    Geoffroy WAGNER eh bien le CountIf() ne fait que compter le nombre de lignes de ta source de données en fonction des conditions spécifiées.

    La fonction Sum() quant à elle fait la somme du calcul réalisé dans le 2è paramètre pour toutes les lignes de la source de données.

    Par exemple, si t’as une collection colData avec les données suivantes :

    +-----------------------------------+n| Qté   | PrixUnitaire | TotalLigne |n+-----------------------------------+n|   2   |     100,00 € |   200,00 € |n|   1   |     400,00 € |   400,00 € |n|   3   |     100,00 € |   300,00 € |n|   1   |      80,00 € |    80,00 € |n+-----------------------------------+

    Alors :

    Sum(colData; Qté * PrixUnitaire) = Sum(colData; TotalLigne) => 980,00 €

    Et :

    CountIf(colData; PrixUnitaire = 100) => 2 (nombre de lignes où le prix unitaire est de 100€)

    CommentID=aosTcjC7HhIukyH, PostID=MmJiKoXzqThqmpO

Connectez-vous pour répondre.