
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 1 année, 4 mois 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.