Paramétrage d’une galerie avec filtre en cascade

  • Paramétrage d’une galerie avec filtre en cascade

    Posté par yannick sur 17 décembre 2024 à 14h58

    Bonjour à la communauté,

    Pouvez-vous m’aider au paramétrage d’une galerie en lien avec une liste sharpoint ?

    Voici ma galerie :

    • Mes 3 combobox :

    “Chercher une ecole” = ComboboxCanvas1 affiche la colonne “ecole” (de type Recherche) en lien avec ma list.

    “Chercher une salle” = ComboboxCanvas3 affiche la colonne “localisation” (de type choix) en lien avec ma list

    “chercher une famille” = ComboboxCanvas2 affiche la colonne “Famille” (de type choix) en lien avec ma list

    • Je souhaite que ma gallerie affiche l’ensemble de ma list avec un tri par la colonne “nom logique” puis lorsque je selectionne une école dans “Chercher une ecole” qu’elle n’affiche plus que les enregistrement de cette école puis sur cette même école un filtre par localisation puis par famille et enfin avec le champ de recherche manuel basé sur la colonne “nom logique”

    Voici ma formule :

    <div>
    <div>SortByColumns(</div>
    <div> Search(</div>
    <div> Filter(Lst_inventaire_ecoles;</div>
    <div> IsEmpty(ComboboxCanvas1.SelectedItems) || IsBlank(ComboboxCanvas1.SelectedItems) || Ecole in ComboboxCanvas1.SelectedItems;</div>
    <div> IsEmpty(ComboboxCanvas3.SelectedItems) || IsBlank(ComboboxCanvas3.SelectedItems) || Localisation in ComboboxCanvas3.SelectedItems;</div>
    <div> IsEmpty(ComboboxCanvas2.SelectedItems) || IsBlank(ComboboxCanvas2.SelectedItems) || Famille in ComboboxCanvas2.SelectedItems;</div>
    <div> Lst_inventaire_ecoles; TextSearchBox1_1.Text;’Nom logique’);</div>
    <div>”Nomlogique”;If(SortDescending1; SortOrder.Descending; SortOrder.Ascending))</div>
    <div> </div>
    <div>mais elle ne focntionne pas… </div>
    <div>Merci pour votre aide.</div>
    </div>

    yannick a répondu Il y a 4 heures, 7 minutes 4 Membres · 13 Réponses
  • 13 Réponses
  • DavidZed

    Membre
    17 décembre 2024 à 15h04

    Hello,

    Si tes combobox sont à sélection unique, remplace :

    Ecole in ComboboxCanvas1.SelectedItems

    par :

    Ecole = ComboboxCanvas1.Selected.Ecole

    S’ils sont à sélection multiple, remplace ( Mais attention à la délégation) :

    Ecole in ComboboxCanvas1.SelectedItems

    par

    Ecole in ComboboxCanvas1.SelectedItems.Ecole

  • yannick

    Membre
    17 décembre 2024 à 15h11

    comme cela ?

    <div>
    <div>SortByColumns(</div>
    <div> Search(</div>
    <div> Filter(Lst_inventaire_ecoles;</div>
    <div> IsEmpty(Ecole = ComboboxCanvas1.Selected.Ecole) || IsBlank(Ecole = ComboboxCanvas1.Selected.Ecole) || Ecole = ComboboxCanvas1.Selected.Ecole;</div>
    <div> IsEmpty(ComboboxCanvas3.SelectedItems) || IsBlank(ComboboxCanvas3.SelectedItems) || “Localisation” in ComboboxCanvas3.SelectedItems;</div>
    <div> IsEmpty(ComboboxCanvas2.SelectedItems) || IsBlank(ComboboxCanvas2.SelectedItems) || “Famille” in ComboboxCanvas2.SelectedItems;</div>
    <div> Lst_inventaire_ecoles; TextSearchBox1_1.Text;’Nom logique’);</div>
    <div>”Nomlogique”;SortOrder.Descending))</div>
    </div>

  • yannick

    Membre
    17 décembre 2024 à 15h18

    Pourquoi si mes 3 combobox et mon filtre manuel sont vide la gallerie n’affiche pas l’ensemble des enregistrement ?

  • yannick

    Membre
    17 décembre 2024 à 15h46

    je me suis concentré sur le filtre avec CB pour le moment :

    <div>
    <div>Filter(Lst_inventaire_ecoles;IsEmpty(ComboboxCanvas1.Selected.Ecole)||IsBlank(ComboboxCanvas1.Selected.Ecole)||Ecole=ComboboxCanvas1.Selected.Ecole;IsEmpty(ComboboxCanvas3.SelectedItems||IsBlank(ComboboxCanvas3.SelectedItems)||Localisation=ComboboxCanvas3.SelectedItems;IsEmpty(ComboboxCanvas2.SelectedItems||IsBlank(ComboboxCanvas2.SelectedItems)||Famille=ComboboxCanvas2.SelectedItems)</div>
    <div> </div>
    <div>Mes elle ne fonctionne pas</div>
    </div>

  • Nelson

    Membre
    17 décembre 2024 à 16h49

    Bonjour Yannick,

    Voici la méthode que j’utilise :

    <div>

    Filter(COLL_LEAK_MANAGEMENT;If(Len(ComboboxCanvas1.Selected.Value)>0;LM_AREA in ComboboxCanvas1.SelectedItems;true))

    <div> </div>
    <div>Tu utilises donc bien Filter sur ta base de données/collection.</div>
    <div>Ensuite pour ton 1er sélecteur, tu viens faire un If.</div>
    <div>Tu vérifies le nombre de caractères est plus grand que 6 et si c’est le cas, tu peux faire ta comparaison.</div>
    <div>Si par contre, ton If est faux donc qu’il n’y a rien qui est sélectionné, tu utilises “true” pour dire à la galerie que tu veux afficher l’ensemble des éléments.</div>
    <div> </div>
    <div>Pour ton cas où tu as 3sélecteurs, tu utiliseras donc le if 3fois en changeant juste les paramètres dedans pour qu’ils s’accordent bien avec tes sélecteurs et tes colonnes à filtrer.</div>
    </div>

    • Cette réponse a été modifiée Il y a 4 jours, 9 heures par  Nelson.
  • R3dKap

    Membre
    17 décembre 2024 à 17h34

    @yannick,

    Sauf erreur de ma part, voici comment écrire ta formule :

    SortByColumns(
    Search(
    Filter(
    Lst_inventaire_ecoles;
    (IsBlank(ComboboxCanvas1.Selected.ID) || Ecole.ID = ComboboxCanvas1.Selected.ID) &&
    (IsBlank(ComboboxCanvas3.Selected.Id) || Localisation.Id = ComboboxCanvas3.Selected.Id) &&
    (IsBlank(ComboboxCanvas2.Selected.Id) || Famille.Id = ComboboxCanvas2.Selected.Id)
    );
    TextSearchBox1_1.Text;
    ’Nom logique’
    );
    ”Nomlogique”;
    If(SortDescending1; SortOrder.Descending; SortOrder.Ascending)
    )

    Attention à bien respecter les majuscules/minuscules des “ID” et “Id”… 😉

  • yannick

    Membre
    17 décembre 2024 à 21h28

    Bonsoir R3dKap et merci pour ta contribution, cependant, la formule ne fonctionne pas. ci dessous les info de copilot :

    L’expression était destinée à filtrer et trier une table appelée Lst_inventaire_ecoles en fonction des sélections faites dans plusieurs comboboxes (ComboboxCanvas1, ComboboxCanvas2, ComboboxCanvas3) et d’un texte saisi dans TextSearchBox1_1. Elle devait également effectuer une recherche dans une colonne spécifiée par logique.

    Cependant, plusieurs erreurs se sont produites dans cette expression :

    1. **Caractères inattendus** : Il y a des caractères non valides dans la formule, notamment un caractère de citation incorrect.
    2. **Opérateurs manquants** : L’expression attendait un opérateur à un certain point, ce qui indique qu’il y a une syntaxe incorrecte.
    3. **Noms non valides** : Les noms de colonnes comme ID et Id ne sont pas reconnus, ce qui suggère qu’ils ne sont pas correctement référencés ou qu’ils n’existent pas dans le contexte donné.
    4. **Arguments non valides** : La fonction IsBlank reçoit des arguments qui ne sont pas valides, et la fonction Search ne reçoit pas le bon nombre d’arguments.
    5. **Types incompatibles** : Il y a des comparaisons entre des types qui ne sont pas compatibles, ce qui empêche l’évaluation correcte de l’expression.

    Ces erreurs indiquent que la formule nécessite des corrections pour être fonctionnelle.

    J’ai bien respecté les ID et Id mais sans resultat. Une idée ?

  • R3dKap

    Membre
    17 décembre 2024 à 22h38

    Alors, avec Copilot je vais pas y arriver (surtout qu’il y a des chances que certaines erreurs découlent d’erreurs précédentes).

    Pour que je puisse t’aider il faudrait que tu m’envoyes une capture de l’erreur en suivant précisément les indications de ce post : https://ppfc.fr/groupes/infos-ppfc/forum/topic/%f0%9f%92%a1-power-apps-remonter-clairement-une-erreur-de-formule/

    Et si tu peux me dire ce que tu as dans le Items de chacune des combo… 🙏

    • Cette réponse a été modifiée Il y a 4 jours, 3 heures par  R3dKap.
  • yannick

    Membre
    17 décembre 2024 à 22h50

    Désolé, voici les info demandé avec la bonne méthode j’espere : 😅

    Les autres erreurs sont du même type sur les 2 autres lignes.

    Pour les combobox :

    Elles sont les 3 identiques au niveau de items

    J’ai a ce sujet aussi un soucis car la combobox affiche chaque enregistrement :

    • Cette réponse a été modifiée Il y a 4 jours, 3 heures par  yannick.
  • R3dKap

    Membre
    18 décembre 2024 à 21h36

    Ok, alors autant pour moi : non seulement je me suis trompé d’ID dans mon code mais en plus comme tes Items de combo sont pas justes ça génère encore plus d’erreurs.

    Alors voici comment procéder…

    Corriger les Items des combos :

    • ComboboxCanvas1.Items = Choices(Lst_inventaire_ecoles.Ecole)
    • ComboboxCanvas3.Items = Choices(Lst_inventaire_ecoles.Localisation)
    • ComboboxCanvas2.Items = Choices(Lst_inventaire_ecoles.Famille)

    Ensuite, le filtre :

    SortByColumns(
    Search(
    Filter(
    Lst_inventaire_ecoles;
    (IsBlank(ComboboxCanvas1.Selected.Id) || Ecole.Id = ComboboxCanvas1.Selected.Id) &&
    (IsBlank(ComboboxCanvas3.Selected.Id) || Localisation.Id = ComboboxCanvas3.Selected.Id) &&
    (IsBlank(ComboboxCanvas2.Selected.Id) || Famille.Id = ComboboxCanvas2.Selected.Id)
    );
    TextSearchBox1_1.Text;
    ’Nom logique’
    );
    ”Nomlogique”;
    If(SortDescending1; SortOrder.Descending; SortOrder.Ascending)
    )

    Ce sont des Id partout (y’a plus de ID tout en majuscules).

    Voilà… Dis-nous ce que ça donne…

  • yannick

    Membre
    18 décembre 2024 à 22h17

    On est pas loin !! La gallerie s’affiche bien, le filtre textuel fonctionne, le tri aussi. Par contre les combobox reste vide. j’ai du modifier selected.id par selected.value pour les combobox 3 et 2 sinon erreur mais ce n’est peux-etre pas la solution.

  • R3dKap

    Membre
    19 décembre 2024 à 12h05

    Oui tu as raison… My bad… Tes combo box 2 et 3 pointant vers des choices, il n’y a qu’un seul champ Value. Donc tu as bien fait de mettre Value.

    Par contre tu as un problème de délégation sur le Ecole.Id (il est souligné). C’est pas un problème tant que ta liste ne dépasse pas les 2000 éléments. Ce sera le cas à terme ?

    Que tes combo soient vides c’est bizarre… T’as pas d’erreurs sur leur propriété Items où tu as mis le code que je t’ai donné ? Tu peux me mettre une capture de ce que l’on voit dans le panel qui s’affiche quand tu cliques sur le lien Modifier de Champs (pour la 1ère combo par ex.) ?

  • yannick

    Membre
    21 décembre 2024 à 22h08

    Bonsoir, en ré ecrivant la formule et en re créant mes combobox tout est OK !

    Merci beaucoup pour votre aide. Une idée pour contourner la délégation à 2000 ?

Connectez-vous pour répondre.