Remplissage automatique à l'aide de colonne recherche sur une liste sharepoint

Étiquetté : , ,

  • Remplissage automatique à l'aide de colonne recherche sur une liste sharepoint

    Posté par Tom Victor sur 14 février 2023 à 8h03

    Bonjour,

    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 Victor

    PostID=6eTzHodIvac1hrj

    Tom Victor a répondu Il y a 11 mois, 3 semaines 1 Membre · 17 Réponses
  • 17 Réponses
  • DavidZed

    Membre
    14 février 2023 à 8h19

    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

    • Tom Victor

      Membre
      14 février 2023 à 8h35

      Merci David,

      Je vais consulter cet article et essayer cette solution.

      SubCommentID=jINUxOtjFxhswQB, CommentID=pFupQR6IOzbWSF1, PostID=6eTzHodIvac1hrj

  • Tom Victor

    Membre
    14 février 2023 à 8h48

    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

  • DavidZed

    Membre
    14 février 2023 à 9h13

    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

  • Tom Victor

    Membre
    14 février 2023 à 9h25

    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

  • DavidZed

    Membre
    14 février 2023 à 10h24

    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

  • Tom Victor

    Membre
    14 février 2023 à 10h56

    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

  • Jonathan Copin

    Membre
    14 février 2023 à 16h45

    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

    • Jonathan Copin

      Membre
      14 février 2023 à 17h02

      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

    • Jonathan Copin

      Membre
      14 février 2023 à 17h11

      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

    • Tom Victor

      Membre
      15 février 2023 à 8h52

      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

    • Jonathan Copin

      Membre
      15 février 2023 à 9h57
      1. Quel est le nom de ta liste “Commandes” ?

      2. Quel est le nom du champs “Client” dans cette table ? Est-ce aussi un champ de type Recherche ?

      3. As-tu des erreurs remontées par Power Apps sur ta formule ?

      SubCommentID=fDK1hTgwjwPvO9q, CommentID=pTGS4IwwLHs4xet, PostID=6eTzHodIvac1hrj

    • Tom Victor

      Membre
      15 février 2023 à 10h28

      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

  • Jonathan Copin

    Membre
    15 février 2023 à 11h02

    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

  • Tom Victor

    Membre
    15 février 2023 à 13h41

    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

  • DavidZed

    Membre
    15 février 2023 à 14h57

    Attention avec ForAll() si tu as de gros volumes de données, c’est rarement optimisé 🙂

    CommentID=tSc4dugUiXE3Z3P, PostID=6eTzHodIvac1hrj

  • Tom Victor

    Membre
    15 février 2023 à 15h06

    Ok je prend note merci pour votre aide 👍

    CommentID=Yl6mMY27PiRAHz2, PostID=6eTzHodIvac1hrj

Connectez-vous pour répondre.