Filtrer une galerie avec plusieurs colonne de choix multiple et Supprimer les doublons

  • Filtrer une galerie avec plusieurs colonne de choix multiple et Supprimer les doublons

    Posté par Nathaly Gomez lopez sur 4 janvier 2023 à 15h50

    Bonjour à tous et à toutes,

    Tout d’abord, meilleurs vœux pour 2023, santé et bonheur pour cette nouvelle année !

    Alors je précise que je suis débutante et qu’il est très certainement possible que mon code ne sois pas très “propre”, je m’en excuse par avance.

    Voici ma problèmatique :

    Je souhaite créer une application qui permettra à l’utilisateur de filtrer une liste Sharepoint avec plusieurs critères.

    J’ai donc :

    • Créer une liste Sharepoint qui comporte plusieurs choix de colonnes multiples

    • J’ai ensuite construit mon formulaire sur PowerApps

    • Mes différents Filtres sont des Combobox et une barre de recherche par texte

    • J’ai réussi à

      • Afficher par défaut la liste en entier

      • Filtrer ma galerie avec mes 6 Critères (qui sont optionels) et lorsque l’utilisateur rempli tous les critéres il tombe sur un résultat unique

      • Paramètrer le bouton “Réinitialiser” afin de remettre tous les combobox sur leur valeur par défaut.

    • Les points bloquants :

      • J’ai plusieurs enregistrements qui ont le même titre comme par exemple le Tableau 1C ou 1D ci-dessus mais qui contiennent différentes informations dans plusieurs colonnes (par exemple la colonne “Sinistre” et la colonne “Administratif” ▶️ Ce qui crée des lignes d’enregistrements en double pour l’utilisateur (dans le cas où ils ne rempli pas complétement tous les filtres) , Je voudrais donc conserver mon filtrage actuelle tout en supprimant les doublons (au niveau du Titre). Est-ce que c’est possible? J’ai essayé plusieurs méthode (Distinct, Groupby mais sans grand succès)

      • Optionnel : J’aimerai que l’utilisateur puisse trouver le tableau précis sans avoir à écrire “Tableau 0” dans la barre de recherche mais juste écrire “0” et Afficher un message personnalisé dans le cas où l’utilisateur ne trouve aucun résultat.

    Mon Code au niveau de ma galerie :

      SortByColumns(n        Filter([@PT_G];n            StartsWith(Title;TextSearchBox1.Text)n             && (Cmb_Sinistre.Selected.Value in Sinistre.Value n             || Cmb_Sinistre.Selected.Value  = Blank()  )n             && (Cmb_Administratif.Selected.Value in Administratif.Value n             ||Cmb_Administratif.Selected.Value = Blank()   )n             && (Cmb_Vehicule.Selected.Value in Vehicule.Valuen             || Cmb_Vehicule.Selected.Value = Blank()   )n            && (Cmb_Achat.Selected.Value in Achat.Value n            || Cmb_Achat.Selected.Value = Blank ()  )n            && (Cmb_Procedure.Selected.Value in Procedure.Value n            || Cmb_Procedure.Selected.Value = Blank ()  )n            && (Cmb_Sauvetage.Selected.Value in Sauvetage.Valuen            || Cmb_Sauvetage.Selected.Value = Blank ()  )n             n             )n    ;"Title")nn

    J’espère avoir été claire et si c’est pas le cas j’en suis désolée. Si vous pourriez m’aider me débloquer de cette situation ça serait super. J’ai consulté plusieurs forums mais j’arrive pas à trouver la solution à mon problème.

    Merci par avance pour votre retour 😄

    PostID=InKAt5e9tjAjxHu

    Nathaly Gomez lopez a répondu Il y a 10 mois, 1 semaine 1 Membre · 2 Réponses
  • 2 Réponses
  • DavidZed

    Membre
    4 janvier 2023 à 19h29

    Hello Nathaly Gomez lopez ,

    Tout d’abord félicitations, c’est plutôt pas mal si tu es débutante sur les app Canvas !

    Voici quelques conseils, mais je préfère préciser: je vais partir du principe que ta liste SP contient moins de 500 éléments (ou au pire, moins de 2000 éléments) et que l’absence de délégation ne posera pas de problème.

    Pour les valeurs uniques, tu as bien identifié les fonctions à utiliser : GroupBy() ou Distinct(). La contrainte qui va découler de l’utilisation de ces formules, c’est que tu vas changer la structure de la donnée affichée dans ta gallerie. Rien de bien grave, mais si tu as dans ton appli un formulaire avec dans item : Gallery1.Selected par exemple, cela ne fonctionnera plus.

    Avec GroupBy() :

      SortByColumns(n        GroupBy(n        Filter([@PT_G];n            StartsWith(Title;TextSearchBox1.Text)n             && (Cmb_Sinistre.Selected.Value in Sinistre.Value n             || Cmb_Sinistre.Selected.Value  = Blank()  )n             && (Cmb_Administratif.Selected.Value in Administratif.Value n             ||Cmb_Administratif.Selected.Value = Blank()   )n             && (Cmb_Vehicule.Selected.Value in Vehicule.Valuen             || Cmb_Vehicule.Selected.Value = Blank()   )n            && (Cmb_Achat.Selected.Value in Achat.Value n            || Cmb_Achat.Selected.Value = Blank ()  )n            && (Cmb_Procedure.Selected.Value in Procedure.Value n            || Cmb_Procedure.Selected.Value = Blank ()  )n            && (Cmb_Sauvetage.Selected.Value in Sauvetage.Valuen            || Cmb_Sauvetage.Selected.Value = Blank ()  )n             n             );"Title";"Doc")n    ;"Title")n

    Pour récupérer les données il faudra “dégrouper” l’enregistrement, idéalement en passant par une variable sur le OnSelect de ton icône, tu peux mettre :

    Set(vSelectedDoc;First(Ungroup(ThisItem;"Doc")))

    Pour la recherche sur tout le texte et pas seulement sur le début, tu peux remplacer dans ton filtre :

    StartsWith(Title;TextSearchBox1.Text)

    par

    TextSearchBox1.Text in Title

    Encore une fois, ce n’est pas délégable 😢

    CommentID=InUPlp0R6taezmB, PostID=InKAt5e9tjAjxHu

  • Nathaly Gomez lopez

    Membre
    9 janvier 2023 à 13h23

    Bonjour David,

    Merci beaucoup pour ton retour 😄 !

    J’ai testé ton code est ça marche super bien mais je rencontre un problème lorsqu’il faut dégrouper l’enregistrement, je ne sais pas sur quelle icône il faut le placer :

    Set(vSelectedDoc;First(Ungroup(ThisItem;"Doc")))

    et je ne sais pas comment récupérer la valeur d’une colonne à choix (Outil) et le lien URL de ma colonne (Lien_PT).

    CommentID=D4oBHAQrRAM2bUb, PostID=InKAt5e9tjAjxHu

Connectez-vous pour répondre.