

R3dKap
Expert Power AppsRéponses céées sur le Forum
Salut @Mickael,
Commençons par le modèle de données car c’est lui qui va déterminer comment construire et coder ton application. Je récapitule ta situation actuelle :
- Liste1 :
- Infos service
- Nom demandeur
- Date
- Statut
- Commentaire
- …
- Liste2 :
- Infos articles
- Désignation
- Réf
- Lookup1 (lookup vers Liste1.ID)
- Lookup2 (lookup vers Liste1.Titre)
Mes questions :
- Pourquoi avoir créé 2 colonnes de lookup dans Liste2 ?
- Pourquoi ne pas avoir créé une seule colonne de lookup multi dans Liste1 pour indiquer les articles commandés par un demandeur ?
Si je reprends ton besoin d’origine : Des départements commandent des articles dans un entrepôt. Une commande peut être réalisée par plusieurs personnes différentes.
En me basant sur ce besoin j’imagine tout de suite un modèle de données différent :
- Liste Départements
- Nom
- Infos
- …
- Liste Articles
- Désignation
- Réf
- Infos
- …
- Liste Commandes
- N° cde
- Date
- Département (lookup vers Départements)
- Statut
- …
- Liste LignesCde
- N° cde (lookup vers Commandes)
- N° ligne
- Article (lookup vers Articles)
- …
Il y a sûrement à rajouter d’autres choses, comme les quantités des articles par ex. mais l’idée principale est là.
Structurer tes données ainsi te permet de gérer plus facilement tes commandes. Tu représentes mieux la réalité et ce sera d’autant plus facile de l’implémenter dans ton application. Tu remarques par exemple que lors d’une commande (contrairement à ta situation actuelle) on ne touchera pas à la liste des articles (sauf quantité éventuelle) mais uniquement aux listes Commandes et LignesCde.
Ensuite, structurer et organiser tes écrans et le parcours de l’utilisateur est tout aussi important pour te faciliter la vie. Par exemple on pourrait imaginer :
- Ecran Accueil
- Liste des commandes dans une galerie triées par date de création décroissante
- Barre d’actions au-dessus de la galerie avec :
- Nouvelle commande
- Annuler commande
- Supprimer commande
- Envoyer commande
- …
- Au clic sur une commande, navigation vers l’écran Commande
- Ecran Commande
- Formulaire avec les données de base de la commande
- Galerie avec la liste des articles faisant partie de la commande
- Barre d’actions au-dessus de la galerie des articles avec :
- Ajouter article
- Retirer article
- …
- Bouton Enregistrer
- Bouton Envoyer
Rien qu’avec ces 2 écrans tu pourras gérer tes commandes assez facilement.
- Liste1 :
Est-ce que tu peux me mettre une capture de ton contrôle AddMediaButton1 qui se trouve dans l’arborescence de ton écran ? Genre comme ça :
Et si tu peux aussi mettre une capture du code que tu as mis dans le OnSelect du AddMediaButton1… 🙏
Pour la formule du Patch() :
- Est-ce que tu sais si tes combo box sont des combo classiques ou modernes ?
- Le ThisRecord ne sert à rien ici -> quelle valeur de date veux-tu mettre dans la colonne Date de ta liste ?
Peut-être que ça serait intéressant aussi que tu mettes une capture de tes écrans tout entier… 😉
Tu dois modifier le code du OnSelect de ton AddMediaButton1 comme ceci :
Set(photoCaptured; UploadedImage1.Image)
En effet, c’est le contrôle UploadedImage1 situé à l’intérieur du groupe AddMediaWithImage1 qui porte le contenu de l’image.
Ensuite, tu dois modifier ton Patch() ainsi :
Patch(
'TOUR TERRAIN';
Defaults('TOUR TERRAIN');
{
Combobox1Selection: Combobox1Selection.Selected.Text; // Ici c'est .Value au lieu de .Text si c'est un contrôle moderne au lieu du contrôle classique
Combobox2Selection: Combobox2Selection.Selected.Text;
PhotoCaptured: photoCaptured
}
)Voilà… Dis-nous si ça marche…
Alors pour pouvoir construire ton instruction Patch() proprement il faut que tu nous dises ou montre comment ton écran est organisé : est-ce que les combos sont directement sur l’écran ou dans un contrôle formulaire ? Quel est le contrôle que tu utilises pour prendre la photo et qui doit alimenter la colonne PhotoCaptured de ta liste SP ?
Salut @David,
Tu dois aller dans la bibliothèque de pages du site pour faire ça :
Puis sur la page concernée :
Puis :
Et ensuite :
Et alors tu dois supprimer des droits de ta page tous les groupes sauf celui des propriétaires du site (pour qu’au moins les propriétaires y aient accès) :
Et ensuite tu peux ajouter les personnes que tu veux qui doivent avoir accès à la page :
Salut @Axel,
C’est bizarre ton utilisation du ThisRecord. Habituellement on le réserve à l’imbrication des boucles ForAll() par ex. Est-ce que ton code est déclenché par un bouton dans une galerie ? Auquel cas ça devrait plutôt être ThisItem.
Pourquoi ThisRecord ?
Est-ce que ton flux est lancé à partir de Power Apps ou il est planifié ?
R3dKap
Membre23 janvier 2025 à 10h05 en réponse à: Envoyer des alertes des factures à plusieurs clientsLe cas que je t’ai détaillé dans mon dernier post fonctionne pour un fichier avec plusieurs lignes de factures pour plusieurs clients, des lignes mélangées avec des statuts et des rappels mélangés.
Si tu suis scrupuleusement mes indications c’est obligé que ça marche puisque ça fonctionne chez moi. Oublie mes posts précédents. Base-toi uniquement sur le dernier d’hier avec toutes les captures. Revérifie de ton côté et dis-moi ce que ça donne… 😉
Salut @Laurent,
Il n’existe rien en natif pour redimensionner une image. Tu devras passer par un flux Power Automate et utiliser un connecteur payant ou passer par un connecteur custom (ce qui sera payant aussi).
Maintenant, lorsque tu enregistres une photo full qualité dans SharePoint, ce dernier te créera automatiquement des version de qualité différente (thumbnail, small, medium, large). Et pour info, le quota ne compte quasiment pas dans SharePoint. C’est pas comme dans Dataverse ou ça se décompte du quota de l’environnement ou de la BDD.
L’interface de ton Power Apps Studio est en français. Donc, le séparateur entre les appels de fonctions est le double point-virgule “;;” et celui entre les paramètres d’une fonction le simple point-virgule “;”.
😉
Salut @Axel,
Pas besoin d’utiliser Power Automate pour envoyer juste un mail. Il te suffit de rajouter le connecteur Office 365 Outlook à ton application Power Apps et d’utiliser la fonction SendEmailV2().
Tu trouveras des infos sur la fonction ici : https://learn.microsoft.com/en-us/connectors/office365/#send-an-email-(v2)
R3dKap
Membre22 janvier 2025 à 12h30 en réponse à: enregistrement dans la table de données saisies dans la comboboxCool… Avec plaisir 😉
R3dKap
Membre22 janvier 2025 à 12h29 en réponse à: Envoyer des alertes des factures à plusieurs clientsBon, j’ai reproduit ton cas chez moi et voici comment faire le flux :
Pour le schéma du JSON, il faut que tu ailles dans l’une des exécutions de ton flux et que tu copies (CTRL-C) un enregistrement du résultat de l’action Filtrer un tableau (sans la virgule derrière le “}” !!!) :
Ensuite, tu retournes dans ton flux et tu cliques sur le bouton Générer à partir de l’échantillon de l’action Analyser JSON, tu colles l’enregistrement copié et tu cliques sur Terminer :
Suite du flux :
Dans la branche OUI :
C’est une action Ajouter à la variable de chaîne. Les IdFact et Client proviennent de l’action précédente Analyser JSON.
Dans la branche NON :
APRES la condition, DANS la boucle :
APRES la boucle :
Voilà… Testé chez moi ça donne ça :
R3dKap
Membre21 janvier 2025 à 15h42 en réponse à: Envoyer des alertes des factures à plusieurs clientsMerci pour toutes les captures…
Alors c’est pas mal… Y’a 2 ou 3 choses à revoir :
- dans la branche NO de la condition il faut que tu mettes une copie identique de ton action actuelle APPEND TO STRING VARIABLE
- dans l’action d’initialisation de la variable strHtmlFactures il faut que tu enlèves le
<table>
car il est déjà dans le corps de ton mail - idem pour l’action SET VARIABLE qui est actuellement juste après l’envoi du mail
Et ça devrait le faire…
R3dKap
Membre21 janvier 2025 à 13h52 en réponse à: enregistrement dans la table de données saisies dans la comboboxLe “c” du “Champcombobox1″ est en minuscule tel que précisé dans le message d’erreur…