

R3dKap
Expert Power AppsRéponses céées sur le Forum
Tom Victor alors comme je dis toujours : le modèle de données c’est le socle de ton application. Il faut qu’il soit bien propre pour que ton application coule de source derrière.
Pour bien formaliser les choses, je recommande toujours de faire un schéma. Je propose dans ce post un modèle de PPT qui te permet de faire ça :
Dans ton cas de figure, ça devrait ressembler à ça à priori :
Voici un lien vers le fichier PPT qui contient ce début de modèle de données pour que tu puisses l’utiliser. Je t’encourage à le compléter en entier avec toutes tes listes et toutes tes colonnes et à le reposter ici parce-que ça aide énormément à comprendre comment l’application est structurée…
En fait pour construire un modèle de données, on essaie de représenter la réalité :
j’ai un ensemble de clients -> liste Clients
ces clients peuvent passer plusieurs commandes -> liste Commande où il faut que je sache à quel client est rattachée la commande donc j’y mets une colonne Client qui pointe vers la liste Clients
dans chaque commande je peux avoir plusieurs lignes -> liste Lignes commandes où il faut que je sache à quelle commande appartient chaque ligne donc j’y mets une colonne Commande qui pointe vers la liste Commandes
etc…
Tu me suis ?
Dis-moi si t’as bien réussi à récupérer le PPT…
Une fois que ton modèle de données est propre, à ce moment-là tu maquettes ton écran et tu décris comment il est censé fonctionner. Et une fois que ta maquette est prête, là tu développes… Ce travail en amont est nécessaire car il te facilite énormément la vie au final… Et aussi à celui qui reprend ton application après toi si un jour tu la lâches… 😉
CommentID=XmwYNntbcZsw1E9, PostID=wVEkrzcD5VIJ3Ae
R3dKap
Membre21 février 2023 à 8h10 en réponse à: Valeur d'un champ "choix" qui change à la suite de la création d'une nouvelle occurrenceTout à fait… C’est juste un choix… Les 2 sont possibles : 2 écrans ou un seul écran… Tout dépend de la complexité des écrans et de l’application. Et j’ai presque envie de dire qu’il est plutôt recommandé de faire des écrans les plus simples possibles, donc 2 écrans bien séparés ça me paraît bien aussi. Ce qui pourrait faire pencher la balance vers un seul écran c’est s’il y a de nombreux autres éléments qui sont communs entre les 2 écrans (menus, popups, onglets, conteneurs masqués, etc.) qui pourraient être mutualisés sur un seul écran pour limiter le nombre de contrôles total dans l’application…
CommentID=xW23Y2qJEaTTmUG, PostID=ByXYsdQd2A6pg2e
Ah ok… Alors avant de faire ça, il faut que je comprenne l’objectif à atteindre en termes de fonctionnalités…
Depuis le début j’ai supposé qu’une personne puisse être inscrit à plusieurs formations et que donc il pourrait y avoir plusieurs formations affichées dans la galerie de droite galFormationsSuivies (c’est pas pour rien que j’ai mis des “s” partout 😉). Est-ce vraiment le cas ? Car j’ai l’impression que tu considères qu’il n’y en aura toujours qu’une seule d’affichée pour une personne sélectionnée… Et si c’était le cas pourquoi une galerie pour afficher 1 seule formation ? Aucun intérêt… Tu vois ce que je veux dire ? Il faut d’abord clarifier ce point… N’hésite pas aussi à me mettre une capture de ton écran (en masquant ce qui doit être masqué) et à me réexpliquer l’objectif global pour que je puisse mieux t’aider… 🙂
CommentID=Q5Hq6F2CxwMmZw3, PostID=6s015rePUPkxa5W
Mmm… Là c’est strange… Le genre de cas de figure où Power Apps fait n’importe quoi… Je serais pas étonné que ça se mette en marche demain matin quand t’auras relancé le Studio… 😅
Si c’est toujours pas le cas, contacte-moi sur Teams à partir de 10h30 (je vais te donner mon mail en message privé) et on fera un partage d’écran…
CommentID=sGcPks9rv2So4or, PostID=6s015rePUPkxa5W
R3dKap
Membre20 février 2023 à 18h51 en réponse à: Valeur d'un champ "choix" qui change à la suite de la création d'une nouvelle occurrenceAvec plaisir… 😉
Ah, effectivement, j’ai oublié de poser la question du Power Automate dans ma liste de questions initiales (et pourtant j’y ai pensé 😅).
Par contre, t’as quand même un souci : il te faut absolument quelque chose dans le Item de ton formulaire pour pouvoir éditer un élément existant. Sinon, ton formulaire ne fonctionnera qu’en mode création…
CommentID=NRry7yxOC5iSafH, PostID=ByXYsdQd2A6pg2e
R3dKap
Membre20 février 2023 à 16h23 en réponse à: Valeur d'un champ "choix" qui change à la suite de la création d'une nouvelle occurrenceOk…
Oui pardon, Items… 😉
Tout a l’air en ordre… Autre question du coup :
Qu’as-tu dans le Item du formulaire ?
Qu’as-tu dans le DefaultMode du formulaire ?
CommentID=FOcR6WRRgWpoh6V, PostID=ByXYsdQd2A6pg2e
R3dKap
Membre20 février 2023 à 15h24 en réponse à: Valeur d'un champ "choix" qui change à la suite de la création d'une nouvelle occurrenceDenis est-ce que tu peux nous confirmer qu’il s’agit d’un formulaire SharePoint customisé avec Power Apps ou s’agit-il du formulaire natif ?
Si c’est un formulaire customisé avec Power Apps, quelques questions :
Est-ce que tu as du code dans le OnSuccess de ton formulaire ?
Est-ce que tu as du code dans le DefaultSelectedItems du DataCardValue de ta colonne de choix ?
Qu’est-ce que tu as dans la propriété Default du DataCard correspondant à ta colonne de choix ?
Qu’est-ce que tu as dans la propriété Datasource du DataCardValue de ta colonne de choix ?
CommentID=TzpFhvQ2bI7DfDC, PostID=ByXYsdQd2A6pg2e
R3dKap
Membre20 février 2023 à 9h01 en réponse à: TRANSFORMATION TABLEAU EXCEL ET ENVOIS EN PJ OUTLOOKPlutôt que d’utiliser la fonction de pièce jointe (icône Trombone) dans l’éditeur de post ou de remarques, utilisez le bouton Image juste à côté pour que l’on puisse voir vos captures directement dans le post… 😉
CommentID=i7Jr9Hr4SlAWv5W, PostID=MNHItnp6XZGj0xH
R3dKap
Membre20 février 2023 à 8h55 en réponse à: Enregistrer, télécharger comme fichier le canva power app et le site sharepoint associéHugotr35 intéressant… et triste 😩 😅
Effectivement, désormais pour reproduire un site SharePoint il faut passer par un site script.
Tu trouveras toutes les instructions ici :
Et pour info, vu que ton site existe déjà, tu peux utiliser la commande Get-SPOSiteScriptFromWeb pour générer automatiquement le site script de ton site.
N’hésite pas si t’as besoin d’aide…
CommentID=6R5eb9uwa9zpEoM, PostID=siRepjkWHS7i4MT
Hello.
Après avoir cliqué sur une formation, regarde le contenu de la variable pour voir ce qu’elle contient. Ensuite, après avoir cliqué sur une formation, analyse bien le frmFormationSuivie.Visible pour voir quelle partie rend le résultat de la formule à false.
D’ailleurs, lorsque tu dis que ça ne marche pas, c’est-à-dire ? Le formulaire ne s’affiche pas lorsque tu cliques sur une formation ? Ou le formulaire ne s’affiche pas lorsque tu choisis une personne qui n’a pas de formation ?
CommentID=Jq5WkALnSuwrxHU, PostID=6s015rePUPkxa5W
Ca y est j’ai compris pourquoi j’avais du mal avec la phrase en question : je croyais que le mot “nom” faisait toujours référence à la personne alors qu’il fait référence à la formation. J’ai le cerveau un peu trop câblé 0 ou 1… 😅
Donc, si je reformule : “Après avoir choisi une personne dans la galerie de gauche, je ne peux pas voir 2x la même formation dans la galerie de droite.“. C’est logique 🙂
Alors voici ce que je te propose de faire… Je vais supposer que ce sont des listes SharePoint dont je vais exploiter les colonnes Title et ID.
Une galerie à gauche qui s’appelle galPersonnes branchée sur ta liste Personnes
Une galerie à droite qui s’appelle galFormationsSuivies branchée sur ta liste Formations_Suivies (qui a une colonne de recherche Personne qui pointe vers la liste Personnes)
Sur galPersonnes.Items :
Personnes
Sur galFormationsSuivies.Items :
Filter(Formations_Suivies; Personne.Value = galPersonnes.Selected.Title)
(je suppose que ta colonne de recherche Personne pointe vers la colonne Title de la liste Personnes)A partir de là, si tu testes, après avoir sélectionné une personne dans la galerie de gauche tu dois voir les formations suivies par cette personne dans la galerie de droite
Je vais supposer que tu as un formulaire frmFormationSuivie dans lequel tu peux créer/modifier une formation suivie par une personne
Sur galPersonnes.OnSelect :
UpdateContext({locSelectedPersonne: ThisItem; locSelectedFormation: Blank()});; Reset(galFormationsSuivies)
Sur galFormationsSuivies.OnSelect :
UpdateContext({locSelectedFormation: ThisItem})
Sur frmFormationSuivie.DataSource =
Formations_Suivies
Sur frmFormationSuivie.Item =
LookUp(Formations_Suivies; ID = locSelectedFormation.ID)
Sur frmFormationSuivie.Visible =
!IsBlank(locSelectedFormation) || (!IsBlank(locSelectedPersonne) && IsEmpty(galFormationsSuivies.AllItems))
Sur frmFormationSuivie.DefaultMode =
If(!IsBlank(locSelectedFormation); FormMode.Edit; FormMode.New)
Sur frmFormationSuivie.OnSuccess =
UpdateContext({locSelectedFormation: Blank()})
Et c’est un bon début… Ca devrait déjà mettre en place pas mal de choses… 😉
CommentID=ZdYIr9MT9vmBbts, PostID=6s015rePUPkxa5W
Même si la formule de Jonathan Copin est correcte, je pense qu’en terme d’expérience utilisateur c’est à éviter (pardon Jonathan Copin 😉).
En effet, la galerie a pour objectif d’afficher le détail d’une commande. C’est sa raison d’être. Il faut donc obligatoirement choisir une commande pour en voir le détail. Afficher le détail de plusieurs commandes pour un client pour moi n’a pas vraiment de sens. Et encore une fois, le client ne doit pas faire partie de la liste CRM-Détail commandes.
Suggestion pour améliorer l’expérience de l’utilisateur :
je créerai visuellement un panel sur le côté gauche de l’écran où je mettrais :
la liste déroulante pour choisir le client
juste en-dessous une galerie qui afficherait la liste des commandes du client choisi (triées par date décroissante)
au clic sur une une commande de la galerie à gauche on verrait immédiatement le détail de la commande dans la galerie centrale
Cela faciliterait la navigation entre les commandes d’un même client…
🙂
CommentID=dQSwjoGFoRWFCaZ, PostID=wVEkrzcD5VIJ3Ae
Estelle j’ai compris globalement mais y’a 2 ou 3 petites choses qui me tracassent…
Il est capital de toujours partir des données : ce sont elles qui “pilotent” l’application.
Je suppose que tu as 2 listes :une liste avec les personnes
une liste avec les formations et une colonne qui fait le lien avec la liste des personnes
En gros je suppose que tu veux gérer les formations suivies/inscrites par des utilisateurs.
Si c’est le cas, on imagine qu’il y a 2 galeries sur ton écran :
une galerie à gauche branchée sur ta liste de personnes
une galerie à droite branchée sur ta liste de formations associées aux personnes
Et puis tu as un formulaire pour créer/modifier une nouvelle association formation/personne.
Du coup, je suppose que ton idée c’est, comme tu le décris :
je clique sur une personne dans la galerie de gauche
du coup ma galerie de droite se filtre automatiquement pour n’afficher que les formations de la personne sélectionnée
s’il n’y a aucune formation pour la personne on affiche le formulaire en mode création
s’il y a des formations pour la personne et que je clique sur une formation, le formulaire s’affiche en édition
C’est bien ça ?
Le point que je ne comprends pas bien du coup dans ton explication c’est “il n’y a pas 2 fois le même nom dans la galerie“. Est-ce que tu peux expliquer ou corriger mes suppositions ci-dessus ?
CommentID=mmGitJ6GcdDgmEE, PostID=6s015rePUPkxa5W
Tom Victor comme indiqué par Jonathan Copin la combo box qui affiche la liste des commandes en fonction du client doit effectivement faire un filtre sur la liste des commandes.
En gros, c’est assez simple…
J’ai envie d’afficher une liste de commandes ? Je filtre sur la liste des commandes !
J’ai envie d’afficher une liste de lignes d’une commande ? Je filtre sur la liste de détail des commandes !
Donc, pour la combo box des commandes en fonction du client, le code de Jonathan Copin devrait fonctionner.
Et pour la galerie, il suffit de filter la liste CRM-Détail commandes en fonction de la commande sélectionnée dans la combo box :
Filter('CRM-Détail commandes'; Commande.Value = DropDown_Commande.Selected.ID)
Plusieurs choses :
Si tu as bien conçu ton modèle de données, chaque commande doit avoir un numéro unique (quel que soit le client) -> donc, pas besoin de préciser le client dans le filtre sur le détail d’une commande -> d’ailleurs tu ne devrais même pas avoir de colonne Client dans ta liste de détail -> la logique c’est : une ligne de détail est liée à une ligne de commande qui est elle-même liée à une ligne de client, c’est tout…
Si tu mets le code de Jonathan Copin dans ta combo box des commandes, alors la structure de ton
.Selected
de ta combo box sera celle de ta liste SharePoint -> c’est pour ça que j’ai misDropDown_Command.Selected.ID
car j’ai supposé que c’est la colonne ID de SharePoint qui sert de numéro de commande unique
Est-ce que t’as besoin d’aide pour mettre en place la logique générale de tout ça ?
CommentID=jLkUP4QfTYQrfNn, PostID=wVEkrzcD5VIJ3Ae
Salut Tom Victor,
C’est très clair. Merci pour les explications détaillées.
Alors, au vu de ton cas, et pour que l’expérience utilisateur soit la meilleure, je viserais l’objectif suivant :
la combo box Cde (en-dessous de Client) reste grisée tant qu’un client n’a pas été choisi
une fois qu’un client a été choisi, la combo box Cde se déverrouille et n’affiche que les commandes du client
une fois qu’une commande a été choisie, la galerie affiche les lignes de détail de la commande
en cliquant sur une ligne de la galerie, cela affiche le panel de droite où l’on peut modifier la ligne de la commande (du coup il ne devrait y avoir qu’un bouton ENREGISTRER)
je mettrais un bouton NOUVELLE LIGNE en haut à droite au-dessus de la galerie qui affiche le détail de la commande
et sur chaque ligne de la galerie je mettrais tout à droite un icône POUBELLE pour supprimer une ligne si nécessaire
dans le panel de droite qui s’affiche lorsque l’on clique sur une ligne ou lorsque l’on clique sur NOUVELLE COMMANDE il y aurait le formulaire branché sur ta liste CRM-Détail commandes : dans ce formulaire, le datacard contenant la commande serait masqué et automatiquement alimenté à partir de la combo box Cde (en-dessous de Client)
Ca t’irait comme mode de fonctionnement ?
CommentID=4Dt3AYMeJnuTvC7, PostID=wVEkrzcD5VIJ3Ae