Remplissage automatique à l'aide de colonne recherche sur une liste sharepoint
Étiquetté : Colonne, power apps, SharePoint
-
Remplissage automatique à l'aide de colonne recherche sur une liste sharepoint
Posté par Tom Victor sur 14 février 2023 à 8h03Bonjour,
Dans une de mes listes sharepoint, j’ai plusieurs colonnes en recherche, une s’appelle “Client”, une autre “Commande”, et la dernière s’appelle “Condition Facturation”. J’ai fait un filtre sur ma galerie “DETAIL COMMANDE” qui me permet de voir uniquement le détail de la commande du client selon son nom, sa commande et sa condition de facturation.
Maintenant j’ai besoin, tout en gardant mon filtre, de faire un remplissage. Lorsque j’écris le nom de mon client dans la barre de recherche, Cde doit me proposer uniquement les commandes qui sont liées à ce même client et que lorsque je choisis ma commande, je dois récupérer ma condition de facturation.
J’espère être clair dans mon explication,
Merci de votre aide,
Tom VictorPostID=6eTzHodIvac1hrj
Tom Victor a répondu Il y a 11 mois, 3 semaines 1 Membre · 17 Réponses -
17 Réponses
-
Bonjour Tom Victor ,
A mon avis la solution que tu cherches correspond à ce que R3dKap a posté récemment dans la base de connaissances :
filter-une-colonne-lookup-sur-la-base-d-une-autre-colonne-dans-la
CommentID=pFupQR6IOzbWSF1, PostID=6eTzHodIvac1hrj
-
Merci David,
Je vais consulter cet article et essayer cette solution.
SubCommentID=jINUxOtjFxhswQB, CommentID=pFupQR6IOzbWSF1, PostID=6eTzHodIvac1hrj
-
-
J’ai essayé la solution que tu m’as donnée et depuis je n’arrive pas a récupérer le nom de commande dans ma combo box. Ai-je fais une erreur dans la réécriture de la formule ?
Filter(n Choices('CRM-Détail Commandes'.Commande);n Id in ShowColumns(n Filter(n 'CRM-Client';n NomClient = truen );n "ID"n )n)
CommentID=gJw15xHAF1TPH3R, PostID=6eTzHodIvac1hrj
-
Il faut remplacer NomClient = true par StartsWith(NomClient.Value; ‘Ton TextInput de recherche client’.Text)
Et pour la condition de facturation, la condition sera Commande.Id= ComboBoxSelectionCommande.Selected.ID
CommentID=51UcAZxk7ykwgCI, PostID=6eTzHodIvac1hrj
-
En remplaçant NomClient = true par StartsWith(NomClient.Value; ‘TextInput_Client’.Text) j’ai une erreur “La fonction “StartsWith” contient des arguments non valides.”
J’ai testé d’enlever le .Value mais je n’arrive a récupérer qu’une seul commande qui n’est pas la bonne.
CommentID=jep9IhVZHqaIu3V, PostID=6eTzHodIvac1hrj
-
Alors il faut démêler un peu 🙂
En admettant que ta liste ‘CRM-Détail Commandes’ a 2 colonnes lookup nommées :
Client, Commande,
Pour les clients, cela devrait ressembler à :
Filter( Choices('CRM-Détail Commandes'.Client); Id in ShowColumns( Filter( 'CRM-Client'; StartsWith(NomClient,TextInputNomDuClient.Text )); "ID" ) )
Pour les conditions de facturation, je pense que ta colonne de recherche devrait être au niveau de ta liste ‘commande’
il faudra peut être inverser “Id” et “ID”. Je n’ai pas le temps de tester, mais tu as déjà une bonne piste 🙂
CommentID=yHGbPLwOeGMK3uh, PostID=6eTzHodIvac1hrj
-
Je pense qu’on s’est mal compris et c’est peut être de ma faute, il faut qu’à partir d’une recherche du nom de client je puisse récupérer le nom de sa commande.
Quand j’écris la formule, elle me donne le nom des clients et pas la commande.
Actuellement ma liste ‘CRM-Détail Commandes’ possède 3 colonnes lookup nommées :
Client, Commande, Condition Facturation
Je ne vois pas trop quoi modifier dans la formule que tu m’as envoyé tout à l’heure à part si je l’écris comme cela :
Filter( Choices('CRM-Détail Commandes'.Commande); Id in ShowColumns( Filter( 'CRM-Client'; StartsWith(NomClient,TextInputNomDuClient.Text )); "ID" ) )
Si je l’écrit comme ci-dessus on revient au même problème que tout à l’heure, mes commandes ne peuvent pas être visible dans la combo box
CommentID=rZS3tBmzehEWinH, PostID=6eTzHodIvac1hrj
-
Avant de te répondre j’ai besoin d’éclaircir un point :
Dans ta liste Sharepoint, quels sont les types de tes champs Client et Commande ?
La méthode de résolution sera différente si ce sont des champs de type Recherche qui pointent vers d’autres listes (Clients et Commandes) ou des champs de type texte ou choix 😄
CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
Dans tous les cas je te conseille de remplacer ton champs de recherche client par une “combobox avec Recherche” dont la valeur Items sera :
Si c’est un champs Recherche dans ta liste :
Clients
Si c’est un type Texte :
Distinct('Detail commande';client)
Si c’est un type choix :
Choices([@'Détail commande'].client)
SubCommentID=xqz6hbvYW43GsXu, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
Une fois fait tu pourras filtrer tes commandes de la même manière sur ta combobox de recherche Commandes :
Si c’est un champs Recherche dans ta liste :
Filter(n Commandes;n Or(n IsBlank(ddlClient.selected);n Client.ID=ddlClient.selected.IDn )n)
Si c’est un type texte :
Distinct(nFilter(n 'Détail commande';n Or(n IsBlank(ddlClient.Selected);n Client=ddlClient.selected.Valuen )n);Commande)
Si c’est un type choix:
Distinct(nFilter(n 'Détail commande';n Or(n IsBlank(ddlClient.Selected);n Client.Value=ddlClient.selected.Valuen )n);Commande)
SubCommentID=9c2T9LJ2Gj40ObD, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
Dans ma liste Sharepoint mes colonnes Client et Commande sont en recherche en effet.
J’ai pu essayé les différentes formules, Clients fonctionne comme il le faudrait mais pas Commande. Je n’arrive toujours pas à récupérer mes commandes.
SubCommentID=125Bw7lrwABmvGR, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
-
Quel est le nom de ta liste “Commandes” ?
-
Quel est le nom du champs “Client” dans cette table ? Est-ce aussi un champ de type Recherche ?
-
As-tu des erreurs remontées par Power Apps sur ta formule ?
SubCommentID=fDK1hTgwjwPvO9q, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
-
Le nom de ma liste “Commande” est ‘CRM-Commande’
Le nom du champs “Client” est “Client” et il est aussi de type recherche dans ma liste ‘CRM-Détail Commandes’
Je n’ai aucune erreurs qui remonte à part un avertissement par rapport à la délégation
SubCommentID=ht6WOYmbM4EUWDE, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj
-
-
Je ne vois pas d’où pourrait provenir le problème. Avec cette formule dans la propriété “Items” de ta combobox ou DropDownList (nommée ddlClient) tu devrais avoir :
-
Soit toutes les commandes si tu ne sélectionnes pas de client
-
Soit les commandes liées au client si tu sélectionnes un client
(Il ne faut pas oublier de modifier les champs visibles et de recherche de la liste déroulante)
Filter(n 'CRM-Commande';n Or(n IsBlank(ddlClient.Selected);n Client.ID=ddlClient.Selected.IDn )n)
CommentID=cyccfcz3K81tJn0, PostID=6eTzHodIvac1hrj
-
-
J’ai réussis à trouver une solution à mon problème en faisant quelque chose d’autre.
J’ai utilisé la Fonction “ForAll” du fait que je n’utilise que des colonnes de type recherche sur ma liste Sharepoint.
Pour ‘Commande’ j’ai écris cette formule:
ForAll(Filter('CRM-Détail Commandes';Client.Value=ddlClient.Selected.Value).Commande;Commande)
Et pour ‘Condition de Facturation’ j’ai écris cette formule:
ForAll(Filter('CRM-Détail Commandes';Commande.Value=Dropdown_Commande.Selected.Value).'Condition Facturation';'Condition Facturation')
CommentID=jCRb6CCM20COUye, PostID=6eTzHodIvac1hrj
-
Attention avec ForAll() si tu as de gros volumes de données, c’est rarement optimisé 🙂
CommentID=tSc4dugUiXE3Z3P, PostID=6eTzHodIvac1hrj
-
Ok je prend note merci pour votre aide 👍
CommentID=Yl6mMY27PiRAHz2, PostID=6eTzHodIvac1hrj
Connectez-vous pour répondre.