![](https://ppfc.fr/wp-content/uploads/buddypress/members/709/cover-image/6561e0e9b4d48-bp-cover-image.jpg)
![Photo de Profil de R3dKap](https://ppfc.fr/wp-content/uploads/avatars/709/6561df324fd0a-bpfull.jpg)
R3dKap
Expert Power AppsRéponses céées sur le Forum
@J une idée pour aider @Iheb? Merci d’avance… 😉
CommentID=hShEgDNjSGwJur7, PostID=hENVVx6KePpERuI
Salut @Iheb,
N’hésite pas à pinger les experts Power BI que tu trouveras dans l’espace Les experts pour avoir plus de chances d’une réponse efficace à ta demande… 😉
Comme par exemple : @J (qui est un petit peu seul d’ailleurs sur Power BI 😅).
CommentID=qHKShFeJvgEUMT5, PostID=gufJx6VanZquIwx
Exact @Alain. Merci, je corrige…
CommentID=4nEGUXffqXOyt2F, PostID=W2XFTBCMqFAsSfc
@Alain du coup j’ai fait vite fait un p’tit post sur ce sujet 😉 :
CommentID=VkDtjJSu5YJnHXf, PostID=W2XFTBCMqFAsSfc
R3dKap
Membre22 mars 2022 à 9h54 en réponse à: Faire une boucle qui génère des enregistrements dans une table à partir d'un formulaireOk, c’est bon, j’ai compris ton modèle de données…
Dis-nous comment on peut t’aider… 😊
CommentID=NVJjrv9Joa4y64X, PostID=RTKvQn2SLy4RdUK
R3dKap
Membre22 mars 2022 à 9h50 en réponse à: Faire une boucle qui génère des enregistrements dans une table à partir d'un formulaireAh, laisse tomber… Je viens de voir que t’avais préfixé toutes tes colonnes avec un trigramme indiquant la liste… Donc, c’est bon…
CommentID=u5W349Ku5VfK46w, PostID=RTKvQn2SLy4RdUK
R3dKap
Membre22 mars 2022 à 9h49 en réponse à: Faire une boucle qui génère des enregistrements dans une table à partir d'un formulaireAlors, c’est vraiment pas mal du tout… Je vois que t’as généré le modèle de données avec Power Query à partir de SharePoint… Top ! 👍 Moi-même j’ai une copine qui m’a montré ça récemment. Faudrait voir à l’occase comment automatiquement retirer certains champs inintéressants. Bref…
Il me manque juste un p’tit truc : si tu peux me rajouter au-dessus de chaque tableau des slides 5, 6, 7 le nom de la table correspondante ça serait top.
J’attends ta nouvelle version…
CommentID=N42osij5ONqfJvW, PostID=RTKvQn2SLy4RdUK
R3dKap
Membre22 mars 2022 à 9h36 en réponse à: Faire une boucle qui génère des enregistrements dans une table à partir d'un formulaireAh oui effectivement… c’est de la Walking Dead App là… 😅
Allez, je regarde ça à tête reposée et je reviens vers toi…
CommentID=ajI7Z9DAIdJoCrm, PostID=RTKvQn2SLy4RdUK
Salut @Ju_li3n,
En fait, que ce soit pour les apps ou les flows, lorsque le propriétaire disparaît, l’objet en question devient effectivement orphelin.
L’outil idéal pour les gérer c’est le CoE Starter Kit car il te permet de les identifier facilement et d’attribuer de nouveaux propriétaires par le biais d’un outil qui est fourni.
Sinon, la bonne pratique, bin c’est tout simplement d’aller dans l’Administration Power Apps, d’aller sur l’environnement concerné, de cliquer sur Apps ou Flux et de filtrer les apps ou les flux sur ceux qui n’ont pas de propriétaire. Et pour chacun d’eux, à cet endroit, tu peux leur attribuer un nouveau propriétaire.
Evidemment, tu peux aussi décider de mettre en place un flux qui va s’exécuter quotidiennement et dont le rôle sera de détecter les apps ou flux orphelins et faire ensuite le traitement que tu préfères derrière (envoyer un mail d’alerte par ex.).
Pour finir, l’idéal est de mettre en place une gouvernance pour éviter les orphelins : par exemple, prévoir une étape dans le processus de sortie du salarié ou de la suppression de son compte pour qu’il s’assurer de bien transmettre ses apps/flux à une autre personne.
Voilou…
CommentID=9vVmV4Y54qHzQem, PostID=M4rJ0pOP1uq9GiS
C’est parce-que ton ‘Body’ a un ‘B’ majuscule… 😉
Respecte bien le formalise indiqué dans la structure indiquée au-dessus de la barre de formule :
Si tu les vois pas tous, tu peux aussi le voir dans Power Automate en ajoutant l’action correspondante (Créer un événement (V4)), en renseignant les paramètres qui t’intéressent avec des valeurs bidons et en regardant le code :
Et du coup tu vois comment s’écrit la propriété :
CommentID=BKfdBaAiyqI3Fcp, PostID=LPTAqkWMo099PuY
Je vois rien de particulier dans ton flow… Est-ce que par hasard t’aurais pas un autre flow de test que t’aurais fait y’a quelques temps et qui est resté branché sur la même liste, qui se déclencherait aussi en même temps que celui-ci et qui te rajouterait d’autres fichiers dans tes dossiers ?
SharePoint n’invente pas des fichiers. Ils viennent forcément de quelque part.
Ah, y’a un truc que tu peux faire aussi : c’est de regarder l’exécution du flux pour essayer de trouver celui qui génère le fichier qui n’a rien à voir dans le dossier…
CommentID=RgUpGX0nWFbVAE4, PostID=P3kqhLcGFmuRQzy
@philippe ouhlaaa… il est bizarre ton truc… 😋
Quel est le déclencheur du flux ?
Quand tu dis que des fichiers sont ajoutés dans ta liste, c’est-à-dire ? En pièces jointes ?
Les fichiers sont copiés dans une bibliothèque de documents ?
Un dossier est créé pour chaque item de la liste ?
Je vois pas très bien pourquoi des vieux fichiers “fantômes” reviendraient dans tes dossiers… On touche au surnaturel… 👻😁
CommentID=kfHeC220bnzjGTQ, PostID=P3kqhLcGFmuRQzy
R3dKap
Membre18 mars 2022 à 12h24 en réponse à: LookUp function basée sur une combobox (multiple choice)Avec plaisir… 😉
Alors j’ai indenté ton code pour y voir plus clair :
If(n FormNewHQ.Mode = FormMode.New,n Concat(n Distinct(n Split(n Concatenate(n Concat(n Filter(n AddColumns(n AccessManagement,n "Selectedcountries",n If(n IsEmpty(DataCardValue49_1.SelectedItems.Value),n "true",n If(n "yes" in Concat(n ForAll(n DataCardValue49_1.SelectedItems.Value,n If(Value in Country.Value, "yes", "no")n ),n Valuen ),n "true",n "false"n )n )n ),n Selectedcountries = "true"n ),n AdminEmailAccess,n ";"n ),n ";",n Concat(n Filter(n AddColumns(n AccessManagement,n "Selectedcountries",n If(n IsEmpty(DataCardValue49_1.SelectedItems.Value),n "true",n If(n "yes" in Concat(n ForAll(n DataCardValue49_1.SelectedItems.Value,n If(Value in Country.Value, "yes", "no")n ),n Valuen ),n "true",n "false"n )n )n ),n Selectedcountries = "true"n ),n HREmailAccess,n ";"n ),n ";",n Concat(n Filter(n AddColumns(n AccessManagement,n "Selectedcountries",n If(n IsEmpty(DataCardValue49_1.SelectedItems.Value),n "true",n If(n "yes" in Concat(n ForAll(n DataCardValue49_1.SelectedItems.Value,n If(Value in Country.Value, "yes", "no")n ),n Valuen ),n "true",n "false"n )n )n ),n Selectedcountries = "true"n ),n CentralApproverEmailAccess,n ";"n )n ),n ";"n ),n Resultn ),n Result,n ";"n ),n Parent.Defaultn)
Bon, le post n’étant pas très large ça n’aide pas non plus mais c’est déjà ça…
Je vois que tu as 3 blocs parfaitement identiques :
Filter(n AddColumns(n AccessManagement,n "Selectedcountries",n If(n IsEmpty(DataCardValue49_1.SelectedItems.Value),n "true",n If(n "yes" in Concat(n ForAll(n DataCardValue49_1.SelectedItems.Value,n If(Value in Country.Value, "yes", "no")n ),n Valuen ),n "true",n "false"n )n )n ),n Selectedcountries = "true"n)
Pour simplifier la maintenance de ton code, ce que je ferais c’est que je mettrais une galerie vide (supposons qu’elle s’appelle Gallery1), masquée, sur l’écran et j’y mettrais cette formule dans sa propriétés Items.
Du coup, ta grosse formule devient :
If(n FormNewHQ.Mode = FormMode.New,n Concat(n Distinct(n Split(n Concatenate(n Concat(n Gallery1.AllItems,n AdminEmailAccess,n ";"n ),n ";",n Concat(n Gallery1.AllItems,n HREmailAccess,n ";"n ),n ";",n Concat(n Gallery1.AllItems,n CentralApproverEmailAccess,n ";"n )n ),n ";"n ),n Resultn ),n Result,n ";"n ),n Parent.Defaultn)
Ce qui est quand même plus lisible… 😉
CommentID=ueu6hQtk5XhurdV, PostID=7sLjiaO0S60z9LY
Salut @Sylvain,
Pour faire des “fonctions” (ce que tu appelles des macros 😉) dans Power Apps, c’est-à-dire du code que l’on peut appeler à plusieurs reprises mais où le code n’existe qu’une seule fois dans toute l’application, il y a plusieurs techniques :
tu mets un bouton quelque part, tu mets ton bout de code sur sa propriété OnSelect, et pour le déclencher tu fais un
Select(NomDuBouton)
tu mets un toggle quelque part, tu mets ton bout de code sur sa propriété OnChange et tu mets
gloExecuteCode
dans sa propriété Default puis lorsque tu veux déclencher le code tu faisSet(gloExecuteCode; Not(gloExecuteCode))
L’inconvénient de ces 2 techniques c’est que tu ne peux pas transmettre de paramètres à ton bout de code. C’est pourquoi il y a une technique plus élégante comme l’indique @Pierre Bourdial (sauf que ce sont pas les Behavior properties mais les Output properties avec l’option Propriétés du composant amélioré activée).
Je m’explique…
Dans ton application, active d’abord l’option en question :
Cela aura pour effet de te rajouter les fonctionnalités suivantes dans les composants (si tu étais déjà sur l’onglet Composants lorsque tu as activé l’option, il faut que tu reviennes sur l’onglet Ecrans puis retour sur Composants pour que ce soit visible) :
Les 2 nouvelles fonctionnalités sont les suivantes :
les propriétés de tes composants peuvent désormais avoir des paramètres
ton composant peut désormais avoir des propriétés de comportement
Lorsque tu combines des paramètres à une propriété de sortie d’un composant tu peux alors créer une “pseudo-fonction”.
Par exemple, je peux créer un composant qui s’appelle Calcul (dans lequel il n’y a aucun contrôle -> il est vide) où je crée une propriété de sortie de type Nombre qui s’appelle Addition avec 2 paramètres N1 et N2 de type Nombre également :Ensuite, tu définis la valeur de cette propriété à
N1 + N2
:Tu viens de créer une fonction d’addition de 2 nombres quelconques.
Pour l’utiliser tu poses un exemplaire de ton composant sur ton écran (ici Calcul_1), et par exemple dans un libellé tu peux faire ceci :
Sympa non ? Ca ouvre pas mal de possibilités… D’ailleurs, sur le Github de Matthew Devaney tu trouveras des tonnes de fonctions faites par différentes personnes de la communauté… 😉
NOTE – ATTENTION, les 2 techniques (avec le bouton et le toggle) décrites ci-dessus ne sont pas recommandées car la tentation est de placer ces contrôles sur un écran inutilisé visuellement par l’application. Or, Power Apps n’aime pas que sur un écran 1 on fasse référence à un contrôle qui se trouve sur un écran 2. Tout simplement parce-qu’il ne garantit pas que l’écran 1 est instancié (existe) AVANT l’écran 2.
Ainsi, si sur le OnVisible de ton écran 1 tu fais unSelect(btnExecuteCode)
qui est sur un écran 2 mais que par malheur lorsque tu lances ton application Power Apps n’a pas encore eu le temps d’instancier l’écran 2 alors que ton écran 1 est déjà visible, et bien ton code ne s’exécute pas…
Cela est encore plus vrai si jamais l’option suivante est activée sur ton application :Elle augmente les performances de l’application en ne créant les contrôles (et donc les écrans) de ton application que lorsqu’ils sont affichés.
CommentID=4ETqVWksJikudH2, PostID=m9I5cvcPjoEoVGk
Tu peux développer @Lo ? Le sujet est intéressant et je suis toujours preneur de REXs… 😉
SubCommentID=RkS8wqJZiEEKlGi, CommentID=fkVznMUAeJU6Zqi, PostID=M4rJ0pOP1uq9GiS