French Power Platform User Group

Please login or click SIGN UP FOR FREE to create your PowerPlatformUG account to join this user group.
Expand all | Collapse all

filtrer par dropdown et searchbox en même temps

  • 1.  filtrer par dropdown et searchbox en même temps

    Posted Aug 31, 2021 11:47 AM

    Bonjour,

    J'aimerais filtrer ma galerie par le dropdown "Tri par état" et en même temps pouvoir faire une recherche dans une case de texte classique.
    Etat est une colonne à choix multiples.

    Pour l'instant j'ai dans Items:

    Filter('01_Mission technique';'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value)

    Ce qui me permet de filtrer ma liste de tâches par état d'avancement.

    Je n'ai pas réussi à créer un tri de galerie par défaut qui trie par ordre alphabétique en fonction de cette fameuse colonne tri 'Etat' ( me permettre de mettre ce qui est "A faire" en haut de la liste), j'ai essayé pas mal de formules de type 'sortbycolum' mais j'ai toujours des erreurs, je manque de connaissances pour comprendre ce qui cloche... C'est aussi pour ça que j'ai fini par faire cette dropdown 'Tri par état'.
    Je suis donc ouverte à d'autres solutions pour organiser ma galerie plus efficacement.





    Merci d'avance pour votre aide !




    ------------------------------
    G.
    ------------------------------


  • 2.  RE: filtrer par dropdown et searchbox en même temps

    Silver Contributor
    Posted Sep 01, 2021 08:31 AM
    Bonjour

    je dirais :
    Avec un dropdown qui s'appelle dropdownEtat basé sur ta colonne a choix multiples ou plus simplement dans la propriété Items Choices("A faire";"Fait";......)
    Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value )

    la tu filtre mission technique par les "A faire", si tu as sélectionné A faire dans ton dropdown - le résultat dans ta galerie ne sera que les A faire)

    Sortbycolumns('01_Mission technique';"Etat";Ascending) classe ' 01_Mission technique' de A à Z en fonction de la colonne Etat

    Sortbycolumns(Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value ) "Date"; Descending)   classe les Etat "A faire" par Date (le nom de la colonne date) du plus recent au plus ancien.

    Avec un textInput appelé "Recherche" et une colonne texte quelconque "NomXouY" (pour l'exemple)
    Sortbycolumns(Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value || Recherche.Text in NomXouY) "Date"; Descending) classe les Etat "A faire" par Date (le nom de la colonne date) du plus recent au plus ancien avec en plus le Nom correspondant a la case recherche.

    Fait bien attention aux valeurs qui sont comparées Une Value = Un Text ne peut pas marcher (powerapps te previent et t'indique l'erreur en général).

    J'espère que cela t'aidera et que je n'ai pas dit trop de bêtise
    fouille aussi la fonction Distinct et Choices pour les Combobox

    Bon courage

    ------------------------------
    CARRIERE LAURENT
    ------------------------------



  • 3.  RE: filtrer par dropdown et searchbox en même temps

    Posted Sep 01, 2021 11:22 AM
    Merci pour ta réponse!

    • Avec un dropdown qui s'appelle dropdownEtat basé sur ta colonne a choix multiples ou plus simplement dans la propriété Items Choices("A faire";"Fait";......) Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value ) la tu filtre mission technique par les "A faire", si tu as sélectionné A faire dans ton dropdown - le résultat dans ta galerie ne sera que les A faire)

      J'ai déjà un combobox qui s'appelle 'Tri par état' et qui fait le boulot, ça fonctionne bien donc j'arrive à filtrer ma galerie pour avoir seulement mes items 'à faire' ou seulement les 'Point Mort', etc.
      J'ai choisi la combobox plutôt que la dropdown classqiue parce sinon je n'ai pas de choix vide pour afficher ma liste de tâches en entier.

    • Sortbycolumns('01_Mission technique';"Etat";Ascending) classe ' 01_Mission technique' de A à Z en fonction de la colonne Etat,
    C'est là où ça bloque : je suppose que c'est dû au fait que ce soit une colonne de choix j'ai essayé de l'ajouter à mon bouton de tri dans OnSelect :



    • Sortbycolumns(Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value ) "Date"; Descending) 
     classe les Etat "A faire" par Date (le nom de la colonne date) du plus recent au plus ancien.
    Je voudrais seulement que ma galerie non filtrée puisse se trier grâce au bouton IconSortUpDown1_1 par ordre alphabétique en fonction du contenu de ma colonne de choix 'Etat'

    • Avec un textInput appelé "Recherche" et une colonne texte quelconque "NomXouY" (pour l'exemple)
      Sortbycolumns(Filter('01_Mission technique';Etat.Value = dropdownEtat.Selected.Value || Recherche.Text in NomXouY) "Date"; Descending)
    classe les Etat "A faire" par Date (le nom de la colonne date) du plus recent au plus ancien avec en plus le Nom correspondant a la case recherche.

    Donc dans ma galerie dans Items j'ai déjà Filter('01_Mission technique';'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value
    'Où?' étant ma colonne de noms avec laquelle je voudrais qu'ils soient triés par ordre alphabétique. Mais il ne reconnait pas le nom de la colonne dans la commande de tri

    Voila ce que ça me donne :



    Des idées pour réparer les erreurs?

    ------------------------------
    Georgia Unrug
    ------------------------------



  • 4.  RE: filtrer par dropdown et searchbox en même temps

    Silver Contributor
    Posted Sep 01, 2021 01:24 PM
    Re



    jette un oeil au post :    Filtrer une galerie à partir d'un menu déroulant (Power Apps) la réponse d'emmanuel peut t'aider.

    Effectivement, cela ne classe pas a partir d'une colonne choix.
    La fonction Sort se comporte différement, mais il y a un probleme de délégation...
    du coup, je transformerais ma colonne Etat en texte simple et je ferais ma liste de choix sous Powerapps (dans ce cas là, l'entrée de donnée ne doit se faire que depuis powerapps ou alors sans erreur sous SP) et je n'aurais plus de probleme de classement. Mais c'est pas très "joli".

    pour ceux qui est du updatecontext (ton bouton de tri) - il faut que tu nommes la variable de contexte.
    recopie le code de ce bouton d'une appli fait en auto a partir d'une liste ou d'un .xls.
    tu auras UpdateContext({SortDescending1: !SortDescending1}) sur le onselect du bouton de tri
    et dans le sortbycolums de items de ta galerie, tu mets if(SortDescending1; Descending; Ascending) pour l'ordre
    en gros il inverse le classement (à cause du "!").

    Pour le reste il faut que tu mettes "Qui_x003f_" a la place de "Qui?"
    !!!!!Evite au maximum les espaces ou signe de ponctuation dans les noms des colonnes - ça complique et je ne suis pas sur que le code aime !
    met plutot Lieu pour "Ou?" et "Personnne_concernée" . le _ est bien pour remplacer les espaces

    courage.
    je fouille qd meme cette histoire de classement par colonne choix _ je vais en avoir besoin...

    ------------------------------
    CARRIERE LAURENT
    ------------------------------



  • 5.  RE: filtrer par dropdown et searchbox en même temps

    Gold Contributor
    Posted Sep 02, 2021 04:39 PM
    Salut à tous les 2,
    Voici comment écrire le Items de la galerie (testé de mon côté) :
    Search(
        Filter(
            '01_Mission technique', 
            'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value
        ), 
        Rercherche.Text, 
        "Où?",
        "Qui?"
    )​

    Le tri je le fais toujours à la fin. D'abord je m'occupe de filter/rechercher. Donc, une fois que t'auras fait marcher ton filtrage et ta recherche, il te suffira d'englober le tout dans un SortByColumns()...

    Autre chose : comme tu peux le voir, l'avantage du Search() c'est que tu peux spécifier une liste de colonnes où la recherche va se faire... Plutôt pratique...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 6.  RE: filtrer par dropdown et searchbox en même temps

    Posted Sep 03, 2021 05:31 AM
    Merci Laurent pour ta réponse,

    J'ai bien un menu déroulant qui trie ma galerie, et mon dropdown me propose les choix de ma colonne de choix 'Etat'. Pour ça pas de soucis!

    Ce que je cherche à faire c'est que les résultats dans la galerie se trient par ordre alphabétique en fonction de cette même colonne 'Etat'. Comme ça mes tâches "A faire" arrivent en premier quand j'utilise mon bouton de tri.

    Tu me dis que pour ça je dois, dans le sortbycolums de items de ta galerie, mettre if(SortDescending1; Descending; Ascending).

    Donc je mets:

    SortByColumns(Filter('01_Mission technique';'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value)if(SortDescending1; Descending; Ascending))

    et j'ai une erreur qui me dit qu'un opérateur était attendu. J'ai oublié quelque chose?

    En deuxième problème je ne peux pas abandonner cette colonne de choix 'Etat' pour une colonne texte car nous seront plusieurs à utiliser la SP liste et je veux que les choix soient verrouillés pour éviter le bazar.

    En troisième sujet je veux qu'on puisse rechercher les items de cette même galerie en fonction de la colonne 'Lieu' (anciennement 'Où?'). et en mettant
    Filter('01_Mission technique';'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value||Recherche.Text in 'Lieu')
    j'ai une erreur de jeu de données trop volumineux pour la colonne 'Lieu'.


    Bref je suis à deux doigts d'abandonner la case Recherche...

    ------------------------------
    Georgia Unrug
    ------------------------------



  • 7.  RE: filtrer par dropdown et searchbox en même temps

    Gold Contributor
    Posted Sep 03, 2021 09:35 AM
    Non non, surtout n'abandonne pas... 😊

    C'est tout à fait faisable... Est-ce que tu as fait une tentative avec la formule que j'ai proposé ? Parce-que je l'ai testée chez moi et elle fonctionne... Donc, y'a pas de raisons...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 8.  RE: filtrer par dropdown et searchbox en même temps

    Silver Contributor
    Posted Sep 03, 2021 09:43 AM
    Re Bonjour


    Non n'abandonne pas effectivement. j'ai testé la formule d'emmanuel cela fonctionnne.

    Avant le if, tu as oublié le ";"

    ------------------------------
    CARRIERE LAURENT
    ------------------------------



  • 9.  RE: filtrer par dropdown et searchbox en même temps

    Silver Contributor
    Posted Sep 03, 2021 09:48 AM
    Pour les Pb de délégation (les sous-lignages bleus), essaie de passer par des collections.

    Tu crées une collection nommée "Macollection" avec Clearcollect(Macollection;MalisteSH) des le départ sur le Onstart de l'appli, ou des que tu en as besoin vi le Onselect d'un bouton ou le On visible d'un écran
    Ensuite tu travailles tes filtres et tes classements sur ta collection, cela marche mieux pour certaines choses.


    Bon courage

    ------------------------------
    CARRIERE LAURENT
    ------------------------------



  • 10.  RE: filtrer par dropdown et searchbox en même temps

    Posted Sep 03, 2021 09:58 AM
    Edited by Georgia Unrug Sep 03, 2021 10:13 AM
    Effectivement je suis en train de me pencher la dessus et il manquait bien un point virgule, merci !
    J'ai l'impression que cette histoire de limite est la dernière barrière. J'ai cru comprendre qu'il y avait peut-être une solution en ajoutant un "Addcolumn", ça vous dit quelque chose?

    ------------------------------
    Georgia Unrug
    ------------------------------



  • 11.  RE: filtrer par dropdown et searchbox en même temps

    Posted Sep 03, 2021 10:05 AM
    Bien essayé dans un Ondisplay et Onstart mais ça n'a pas l'air de régler cette histoire de jeux de données volumineux...

    ------------------------------
    Georgia Unrug
    ------------------------------



  • 12.  RE: filtrer par dropdown et searchbox en même temps

    Posted Sep 03, 2021 09:56 AM
    Merci Emmanuel,

    J'ai bien essayé (avec les anciens noms de colonnes et avec de nouveaux plus simples) et j'ai ça:
    J'ai aussi essayé avec des point virgule à la place des virgules :





    ------------------------------
    Georgia Unrug
    ------------------------------



  • 13.  RE: filtrer par dropdown et searchbox en même temps

    Gold Contributor
    Posted Sep 03, 2021 02:33 PM
    Attention au séparateur de paramètres dans les fonctions. Comme ton interface est en français, c'est un point-virgule qui sépare les paramètres dans les fonctions.
    Search(
        Filter(
            '01_Mission technique'; 
            'Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value
        );
        Rercherche.Text;
        "Lieu";
        "Qui"
    )​​

    Pour ce qui est du problème de la fonction Search() qui n'est pas déléguable :
    • si tu sais que tu n'auras pas plus de 2000 éléments dans ta liste à un instant t (par exemple si ta liste est nettoyée régulièrement) alors on s'en fout
    • si ta liste va dépasser les 2000 éléments alors il faut se débarrasser du problème de délégation
    Dans le 2è cas, y'a 2 solutions possibles :
    1. Tu te débrouilles pour que le volume de données sur lequel tu vas effectuer le Search() soit toujours inférieur à 2000 éléments
    2. Tu laisses tomber le Search() et tu utilises le StartsWith() (qui est déléguable) directement dans le Filter()
    Dans la 1ère solution, pour limiter tes données à 2000 éléments, tu pourrais par exemple réduire la liste des missions à celles du mois ou du trimestre en cours (conditions à rajouter dans le Filter()).
    Dans la 2ème solution, ta formule se transforme alors en :

    Filter(
        '01_Mission technique'; 
        ('Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value) && (Recherche.Text = Blank() || StartsWith('Lieu', Recherche.Text))
    )​

    L'inconvénient étant que seules les missions COMMENCANT PAR le texte tapé dans Recherche seront affichées. Il n'y aura pas de recherche au milieu du lieu.

    Enfin, pour ce qui est du tri, l'idéal est de rajouter une colonne dans ta source de données pour attribuer un numéro d'ordre à chaque statut et trier sur cette colonne :

    SortByColumns(
        Filter(
            AddColumns(
                '01_Mission technique'; 
                "SortStatut"; 
                Switch(
                    Etat.Value; 
                    "A faire"; 
                    "01"; 
                    "Point mort"; 
                    "02"; 
                    "Abandonnée"; 
                    "03"
                )
            ); 
            ('Tri par état'.Selected.Value = Blank() || Etat.Value = 'Tri par état'.Selected.Value) && (Recherche.Text = Blank() || StartsWith('Lieu'; Recherche.Text))
        )​;
        "SortStatut"
    )


    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------