Filtrer drop down basé sur autre colonne Sharepoint

Étiquetté : ,

  • Filtrer drop down basé sur autre colonne Sharepoint

    Posté par CedZ sur 7 décembre 2022 à 5h19

    Bonjour à tous ,

    J’ai pour le moment une app avec 1 drop down dont les valeurs proviennent d’une colonne Sharepoint.

    Je souhaiterais que ce drop down exlu esormais des valeurs basées sur 1 autre colonne, je m’explique: Voici ma table en arrière plan:

    Continent | Country

    NA Mexico

    NA Canada

    Europe France

    Europe Italy

    Asia China

    Je souhaiterai que mon drop down me retourne tous les “Country” de la liste Sharepoint à l’exception de ceux du Continent “Asia”. J’ai fait quelques essais et recherches cet après-midi mais ne suis pas arrivé au résultat souhaité.

    Si quelqu’un pouvait m’orienter ce serait apprécié. Merci.

    PostID=z8o8b0YLoD3Dges

    R3dKap a répondu Il y a 7 mois, 2 semaines 1 Membre · 10 Réponses
  • 10 Réponses
  • Karao

    Membre
    7 décembre 2022 à 8h08

    Bonjour CedZ,

    Je ne suis pas un expert mais je pense qu’un ForAll suivi d’un Filter devrait t’aider

    ForAll(Filter('source de donnée';condition);{country:country})

    Je ne suis pas un expert très loin de moi cette idée évidemment, j’imagine que d’autre solution plus simple doivent exister mais je pense que ça pourrait te donner une piste (je pense…)

    CommentID=djp1DKfyM6JlrTA, PostID=z8o8b0YLoD3Dges

  • Sebastien

    Membre
    7 décembre 2022 à 8h34

    Bonjour.

    J’utilise rarement les listes SharePoint, mais je pense que tout est faisable dans un Filter(). Dans l’option ‘Items’ de ta dropdown tu peux essayer quelque chose comme ça :

    Filter('NomSourceDeDonnée'; Continent <> "Asia").Country

    En passant voici la liste des opérateurs utilisable dans canvas, ça sert toujours !

    Bonne continuation.

    CommentID=VdX9pzfL72DrhDH, PostID=z8o8b0YLoD3Dges

  • DavidZed

    Membre
    7 décembre 2022 à 8h35

    Hello, tu peux utiliser un filtrage des choix de la colonne :

    Filter(Choices([@'Source'].'NomLogiqueDelaColonne'),Not("Asia" in Value))

    Devrait fonctionner, il y aura certainement un avertissement de délégation, mais cela ne posera pas de problèmes si tu as moins de 500 choix possibles.

    CommentID=RtdoQT9aouLd0e5, PostID=z8o8b0YLoD3Dges

  • R3dKap

    Membre
    7 décembre 2022 à 12h15

    Je crains que la solution de DavidZed ne fonctionne pas dans ce cas-ci car tu ne veux pas obtenir une liste de continents mais une liste de pays dont le continent n’est pas Asia.

    Si c’est bien le cas, la solution de Sebastien Brandeis est la plus simple.

    Mais ensuite, attention : il faut te poser la question du format de la données que tu souhaites avoir dans ta dropdown et ce que tu vas en faire… Est-elle dans un datacard d’un formulaire ou sur un écran en dehors d’un formulaire ? Sert-elle à mettre à jour la colonne Pays de la liste ? D’ailleurs tes colonnes Continent et Pays sont-elles des colonnes de choix ou de recherche ? Car les formats ne sont pas les mêmes…

    Ce que va te retourner la solution de Sebastien Brandeis c’est un tableau à une colonne Value avec la liste des pays hormis ceux du continent Asia.

    CommentID=vhXKwSKHGP2UmZU, PostID=z8o8b0YLoD3Dges

  • DavidZed

    Membre
    7 décembre 2022 à 14h05

    J’avais compris que la colonne contenait une concatenation ‘continent & pays’ 😄

    CommentID=cU1XcQEorxuLuI3, PostID=z8o8b0YLoD3Dges

  • CedZ

    Membre
    7 décembre 2022 à 19h31

    Bonjour merci tout le monde, je vais faire des tests et vous donnerai des nouvelles.

    Merci encore

    CommentID=JgeEsSAPR1cNc1T, PostID=z8o8b0YLoD3Dges

  • CedZ

    Membre
    8 décembre 2022 à 16h45

    Merci à tous pour vos réponses. La réponse de Sébastien convient mais j’ai mal décrit mon problème ( je viens d’hériter de l’app cette semaine).

    Donc initialement, l’app pointait vers une liste Sharepoint et le drop down était basé sur une des colonnes de la liste (country).

    Le changement que nous voulons faire est le suivant:

    • Créer une table de dimension dans laquelle nous aurions d’autres infos pour les pays et notamment le continent-,

    • FMon drop down doit toujours être basé sur ma liste Sharepoint cependant il doit exclure les pays appartenant au continent ”Asie” de ma table de dimension.

    Je sais pas si la meilleure approche serait de faire un lookupvalue entre les listes Sharepoint (il me semble que les lookup engendrent quelques problèmes dans Powerapps?) ou s’il y a une autre syntaxe de formule qui pourrait m’aider. Je suis en train de découvrir le language en même temps donc excusez moi pour mon manque de connaissance.

    J’ai ajouté un fichier excel qui présente mes tables, leur structure et l’output désiré.

    Merci à tous encore une fois,

    CommentID=zXFcDbAsf5V2GX5, PostID=z8o8b0YLoD3Dges

  • CedZ

    Membre
    8 décembre 2022 à 19h00

    Ok Je pense avoir trouvé. J’ai utilisé :

    Filter (Choices ( Table1, ‘Country’),
    Value in Filter ( Table2, Continent.Value <>’Asia).Title)

    CommentID=PkcvCjQV0HgwoU6, PostID=z8o8b0YLoD3Dges

  • Theophile CHIN-NIN

    Membre
    9 décembre 2022 à 6h56

    Attention à tes soucis potentiels de délégation.

    Dans ton cas si Table2 a plus de 500 (jusque 2000) elements, le tableau retourné risquerai d’être incomplet

    CommentID=3tI8Z8SSbLvOYV9, PostID=z8o8b0YLoD3Dges

  • R3dKap

    Membre
    9 décembre 2022 à 22h04

    En fait tu veux filter un lookup en te basant sur une autre colonne de la liste liée de ton lookup… Cas fréquent pour lequel je me suis noté dans un coin la solution propre :

    Filter(n    Choices(TableDeFait.Country); <--- colonne de lookupn    Id in ShowColumns(n        Filter(n            TableDimension; <--- liste à laquelle est liée le lookupn            Continent = "Asie" <--- filtrage sur la colonne de la liste liéen        );n        "ID"n    )n)

    Attention, si ta colonne Continent est de type choix, tu devras remplacer Continent = "Asie" par Continent.Value = "Asie"… 😉

    CommentID=5KhJzSuPKvHESvO, PostID=z8o8b0YLoD3Dges

Connectez-vous pour répondre.