Réponses céées sur le Forum

Page 22 sur 79
  • R3dKap

    Membre
    11 janvier 2024 à 14h40 en réponse à: Problème de mise à jour de table sur Power Apps

    Jayne, si il te dit Statut ne correspond pas au attendu ‘Text’. Type ‘Error’ c’est que tu as une erreur dans le Items de ton Dropdown2. Qu’as-tu dans le Items de ton Dropdown2 ?

    Sinon, mets-nous plutôt une capture complète de ton code avec la souris qui survole l’erreur. Ce sera plus facile d’identifier le pb je pense…

    Voici comment remonter clairement ses erreurs Power Apps dans le forum : https://ppfc.fr/groupes/infos-ppfc/forum/topic/%f0%9f%92%a1-power-apps-remonter-clairement-une-erreur-de-formule/

  • R3dKap

    Membre
    7 janvier 2024 à 21h35 en réponse à: Ajouter une image dans une liste SHAREPOINT

    Salut Alain,

    Le plus simple selon moi :

    • rajoute une colonne PhotoCouverture de type Image dans ta liste
    • va sur ta liste et sélectionne l’option du menu : Intégrer > Power Apps > Créer une application
    • choisi un nom pour ton application et valide puis attends que ton application se crée
    • une fois dans Power Apps :
      • rends-toi sur l’écran EditScreen1
      • sélectionne le formulaire EditForm1
      • dans le panneau de droite clique sur le lien à côté de Champs (par ex. : 8 sélectionné(s))
      • dans le panneau qui s’est ouvert, clique sur Ajouter un champ
      • sélectionne ta colonne d’image PhotoCouverture et clique sur Ajouter
    • enregistre ton application et publie-là

    Sur ton téléphone :

    • Installe Power Apps
    • Connecte-toi avec ton compte
    • Lance l’application créée précédemment
    • Choisi ton livre dans ta liste en appuyant dessus
    • Clique sur le bouton Crayon en haut à droite
    • Tout en bas du formulaire, au niveau de ton champ PhotoCouverture, appuie sur Appuyer ou cliquer pour ajouter une image
    • Sélectionne l’option Prendre une photo
    • Prends la couverture du livre en photo
    • Clique sur l’icône Coche en haut à droite

    Et voilà…

  • Salut Marielle,

    Ah bin si ton formulaire est customisé avec Power Apps alors c’est assez simple à mettre en place…

    Il te faut une liste AppUsers où tu indiqueras les utilisateurs qui ont accès à l’application avec leur rôle associé :

    • Utilisateur (de type User)
    • Rôle (de type Choice) avec les différents rôles :
      • RMO

    Dans ton formulaire, sur le App.OnStart tu récupères le rôle de l’utilisateur connecté avec le code suivant :

    <code class="language-plaintext">Set(gloUserRole; LookUp(AppUsers; Utilisateur.Email = User().Email).Rôle)

    Ensuite, sur les datacards de tes champs tu peux utiliser cette variable globale gloUserRole pour limiter l’accès aux champs. Par exemple, sur la propriété DisplayMode d’un champ qui ne doit être accessible qu’au RMO :

    <code class="language-plaintext">If(
      SharePointForm1.Mode = FormMode.View;
      DisplayMode.View;
      If(
        gloUserRole = "RMO";
        DisplayMode.Edit;
        DisplayMode.Disabled
      )
    )

    En espérant t’avoir aidé…

  • Bon, j’y arrive pas avec l’éditeur… En fait il te faut mettre ta variable Assignees à l’intérieur des balises < ul > et < /ul >

  • Désolé pour le corps du mail, pb avec l’éditeur…

    Pour la partie qui liste les personnes affectées à la tâche ce serait plutôt quelque chose comme :

      [Assignees]

  • Salut Marielle,

    Pour commencer, tu noteras qu’envoyer un seul mail à 3 destinataires est (quasi) identique à envoyer 3x un même mail, chacun à un destinataire… 😋 Mais je suppose que ton problème se situe plus dans le fait que tu voudrais pouvoir lister les utilisateurs de la tâche dans le corps du mail.

    Ensuite, c’est normal que ton flux envoie un mail à chaque utilisateur puisque ton action “Envoyer un email” se trouve à l’intérieur de la boucle qui parcours les utilisateurs à qui est affecté la tâche.

    Pour ne faire qu’un seul envoi de mail et faire en sorte que le corps du mail contiennent la liste des utilisateurs affectés à la tâche, il faut dans ta boucle :

    • construire une variable Recipients de type chaîne qui va contenir les adresses mails de tes destinataires séparés par des point-virgules (utilise l’opération “Ajouter à une variable de chaîne”)
    • construire une variable Assignees de type chaîne avec la liste des utilisateurs affectés à la tâche sous la forme d’une liste HTML (par ex.
    • User1
    • User2
    • User3
    • )

    Puis, APRES ta boucle, envoyer le mail à Recipients et placer Assignees dans le corps du mail avec quelque chose comme ceci (en mode HTML bien sûr) :

    <code class="language-plaintext">

    Bonjour,

    ...blablabla...

    Personnes assignées à la tâche:

    <ur>[Assignees]

    [Assignees] c’est la variable en question…

    Voilà, j’espère que ça t’aide…

  • R3dKap

    Membre
    30 décembre 2023 à 18h09 en réponse à: Télécharger pièces jointes liste sharepoint

    Mickael, toujours coincé ?

    Si c’est le cas, il faudrait que tu nous précises où tu as placé ton code de téléchargement des pièces jointes.

    Puisque tu as une galerie qui affiche l’ensemble des éléments d’une liste avec “en face” l’ensemble des pièces jointes de chaque élément, je suppose que tu as mis un icône ou un bouton DANS ta galerie pour permettre de télécharger les PJ de l’élément concerné.

    Dans ce cas, il te suffit de mettre le code suivant :

    <code class="language-plaintext">ForAll(
      ThisItem.'Pièces jointes';
      Download(AbsolutUri)
    )

    Maintenant, si jamais ton but c’est de mettre un bouton EN DEHORS de ta galerie pour télécharger la totalité des PJ de TOUS les éléments de ta liste, alors il te faudra boucler sur tous les éléments de ta galerie et ensuite pour chacun télécharger toutes les PJ concernées :

    <code class="language-plaintext">ForAll(
      galListData.AllItems As loopItem;
      ForAll(
        loopItem.'Pièces jointes' As loopPJ;
        Download(loopPJ.AbsoluteUri)
      )
    )

    Mais pas terrible pour les perfs vu l’imbrication des 2 ForAll().

  • R3dKap

    Membre
    30 décembre 2023 à 16h51 en réponse à: Insérer une ligne dans un tableau avec adresse et nom dynamiques

    Salut Catherine,

    Je me pose une question sur ton action ici :

    Pourquoi dans le paramètre Fichier tu as des genres de “variables” Excel ? Normalement, si tu cliques sur l’icône dossier à droite et que tu sélectionnes manuellement le fichier Excel, il devrait plutôt te l’afficher simplement au format texte ainsi : /Formateur/Session.xlsx. Je pense qu’il y a un souci à ce niveau là. Lorsque tu sélectionnes bien le fichier manuellement via l’icône dossier, la liste déroulante du paramètre Table est censée t’afficher automatiquement toutes les tables XML présentes dans ton fichier Excel.

    Par contre, si tu utilises des variables dans le paramètre Fichier, alors pour spécifier le paramètre Table tu dois cliquer sur Entrer une valeur personnalisée et taper manuellement le nom du tableau concerné.

  • R3dKap

    Membre
    15 janvier 2024 à 9h32 en réponse à: Problème de mise à jour de table sur Power Apps

    Plutôt que d’utiliser {Iddmd: …} en 2è paramètre du patch, essaie plutôt un :

    LookUp(TaSourceDeDonnées; Iddmd=varRecordID)
  • R3dKap

    Membre
    9 janvier 2024 à 13h10 en réponse à: Formulaire avec 80 champs

    Aaaaah… Voilà une belle explication 😅 Merci.

    La manière dont tu structure tes données est hyper importante pour faciliter et clarifier le développement de ton application.

    Perso, je suis pas fan de créer des objets hyper similaires comme ça. Je préfèrerais avoir une seule liste, voire je construirai mon modèle de données ainsi :

    • Une liste Compteurs qui référence tous les compteurs (qui du coup pourra porter d’autres colonnes détaillant éventuellement les caractéristiques de chaque compteur)
    • Une liste Services avec les 6 services concernés par les relevés (également avec des données complémentaires si nécessaire)
    • Une liste Relevés où seront stockés les relevés mensuels

    Cette dernière liste Relevés, je lui donnerais la structure suivante :

    • Service (qui pointe vers la liste Services)
    • Compteur (qui pointe vers la liste Compteurs)
    • Date (la date du relevé)
    • Année (qui va contenir l’année de la date du relevé)
    • Mois (qui va contenir le mois de la date du relevé)
    • Valeur (qui va contenir la valeur relevée pour le compteur du service à la date précisée)

    Ce modèle de données représente vraiment la réalité : c’est l’idéal. Toutes les problématiques d’accès aux données ou de volumétrie peuvent être résolus dans le code. Je vais l’expliquer…

    Effectivement, le volume de la liste Relevés va être très important. C’est la raison pour laquelle il te faut alors concevoir ton application pour t’assurer que toute requête sur ta liste te ramène moins de 2000 éléments et éviter tout problème de délégation (en as-tu entendu parler ?).

    C’est pour cette raison que j’ai rajouté les colonnes Année et Mois dans la liste : elles vont permettre de cibler les enregistrements à afficher dans ton application, en plus de Service (et éventuellement Compteur). En effet, dans une requête, si on avait utilisé les fonctions Year(Date) ou Month(Date) on aurait eu des problèmes de délégation. A toi de remplir ces 2 colonnes Année et Mois au moment de la création du relevé.

    Concrètement, l’idée va consister à obliger l’utilisateur à choisir un service (éventuellement un compteur, mais c’est pas obligé), une année (éventuellement un mois, mais c’est pas obligé non plus). Sauf erreur de ma part, étant donné que tu as 460 compteurs (donc, en moyenne 460/6=76 compteurs par service) et que tu vas avoir un relevé par mois par compteur et par service, cela va te donner 76 x 12 = 900 relevés/compteur/service/an. Il est donc capital que ton application oblige à choisir à minima un service et une année avant d’accéder à ta liste. Toute opération de récupération de données sur ta liste devra donc à minima avoir un :

    <code class="language-plaintext">Filter(Relevés; Service = … & Année = …)

    C’est comme ça que l’on monte une solution propre et bien structurée (selon moi 😉).

    Maintenant, ce sera à toi de faire en sorte qu’après que l’utilisateur ait choisi le service et l’année, tu récupères l’ensemble des relevés concernés pour les mettre en collection et ne travailler ensuite qu’avec la collection pour optimiser les accès à la source de données. A toi aussi de faire en sorte de récupérer en plus les relevés JUSTE sur le mois m-1 pour pouvoir calculer le delta.

    Et les listes Services et Compteurs tu les charges aussi en entier dans des collections une seule fois au lancement de l’application.

    Est-ce que cette approche pourrait répondre à ton besoin ?

  • R3dKap

    Membre
    7 janvier 2024 à 21h14 en réponse à: Modifier des noms de colonnes SharePoint selon la langue

    Tu peux tout à faire utiliser les noms techniques des colonnes internes à SharePoint. Il suffit de bien connaître leurs noms 😉. Voici les principaux :

    Pense bien à les mettre entre apostrophes :

    <code class="language-plaintext">ThisItem.'{IsFolder}'
  • R3dKap

    Membre
    7 janvier 2024 à 21h01 en réponse à: Formulaire avec 80 champs

    Très belle année à toi également.

    Merci pour les explications complémentaires.

    Du coup, qu’as-tu prévu pour l’instant dans tes listes ? Comment sont-elles structurées ? Quelles colonnes contiennent-elles ?

  • R3dKap

    Membre
    7 janvier 2024 à 20h55 en réponse à: Optimisation d’une application “calendrier de l’avent”

    Je te suggère de séparer le Patch() du Collect() car il te faut gérer les erreurs éventuelles du Patch() :

    <code class="language-plaintext">UpdateContext({locUpdatedItem: Patch(adventcalendar; ...etc...)});;
    If(
      IsBlank(locUpdatedItem);
      Notify("Erreur lors de la mise à jour !");
      UpdateIf(adventcalendarCollection; Title=username.Text && Door=door; locUpdatedItem)
    )

    Et je remplace le Collect() par un UpdateIf(). Ou alors avant ton Collect() t’es obligé de mettre un RemoveIf() pour éviter les doublons dans ta collection.

  • R3dKap

    Membre
    30 décembre 2023 à 17h47 en réponse à: Formule RemoveIF

    Toujours coincé Thomas ?

    Pour résoudre ton problème il faut d’abord que l’on vérifie ton modèle de données : c’est à dire comment tu as structuré tes listes SharePoint.

    Peux-tu nous préciser quelles listes tu as créé et quelles colonnes elles possèdent et comment elles sont liées entre elles ?

  • R3dKap

    Membre
    30 décembre 2023 à 17h27 en réponse à: Propriété Selected sur un contrôle de table

    Salut Laurent,

    Si on parle bien du contrôle Table de données de Power Apps, alors ce que tu cherches à faire n’est pas possible. La propriété Selected de ce contrôle est une propriété de sortie qui ne peut pas être définie manuellement par un mécanisme quelconque. La sélection ne se fait QUE manuellement par l’utilisateur lorsqu’il clique sur une ligne du tableau.

    Pour faire ce que tu veux faire, il te faudra passer par une galerie.

Page 22 sur 79