Réponses céées sur le Forum

Page 55 sur 79
  • R3dKap

    Membre
    4 mai 2022 à 9h17 en réponse à: Problème de condition de colonne

    Non non, ne modifie pas ta colonne Title. C’est dans ta colonne calculée que tu mets :

    =[Title]

    CommentID=ttSwwih8ohqXQWD, PostID=5uMF1oxNpYQfnbO

  • R3dKap

    Membre
    4 mai 2022 à 9h02 en réponse à: Problème de condition de colonne

    Là y’a un truc qui va vraiment pas… Pas normal ça… Chez moi ça fonctionne bien… Est-ce que tu peux essayer avec la colonne Title ?

    CommentID=2HBzISUBpaW6wH3, PostID=5uMF1oxNpYQfnbO

  • R3dKap

    Membre
    4 mai 2022 à 8h49 en réponse à: Problème de condition de colonne

    Est-ce que tu peux tester juste ça dans la formule ?

    =[Statut LDM]

    Est-ce ça c’est accepté ?

    CommentID=eiKkASBgRtMdPMg, PostID=5uMF1oxNpYQfnbO

  • R3dKap

    Membre
    4 mai 2022 à 8h44 en réponse à: Problème de condition de colonne

    Tu peux nous mettre une capture complète des caractéristiques de ta colonne Statut LDM stp ?

    CommentID=14nzm3I1L1sHS1N, PostID=5uMF1oxNpYQfnbO

  • R3dKap

    Membre
    4 mai 2022 à 7h51 en réponse à: Problème de condition de colonne

    @Marine est-ce que comme l’a indiqué @Guillaume RENARD tu as bien recréé une colonne CALCULEE pour y mettre ta fonction ? Car dans ta capture d’origine tu mettais ta formule dans les paramètres de validation de ta liste…

    Sinon, chez moi j’ai fait le même test que toi, une colonne calculée basée sur une colonne de type Choice :

    Par contre, faut utiliser des points-virgules si la langue par défaut de ton site est bien Français. A vérifier ici :

    https://<ton domaine>.sharepoint.com/sites/<ta collection de sites>/_layouts/15/muisetng.aspx

    CommentID=CNK0nX4GJ6D4jaR, PostID=5uMF1oxNpYQfnbO

  • R3dKap

    Membre
    3 mai 2022 à 14h42 en réponse à: Actions en cascade sans attente précédente

    Oui tu peux tout à fait utiliser le résultat du Patch() (locNewOrModifiedItem dans mon exemple) pour t’assurer qu’il n’y a pas eu d’erreur : If(IsBlank(locNewOrModifiedItem); Notify("Erreur"); Notify("OK")).

    Mais le mieux consiste à utiliser la fonction Errors().

    De manière générale, faut que t’utilises à fond la doc officielle sur les fonctions qui décrit tout ça hyper bien :

    Et sinon, oui bien sûr, tu peux tout à fait utiliser une collection comme source de données d’une galerie… 😉

    CommentID=7XKTmRUQlkdXJna, PostID=QwgjeaKmdvRNPuH

  • R3dKap

    Membre
    3 mai 2022 à 13h54 en réponse à: Actions en cascade sans attente précédente

    @JLF le site a pas mal réduit la qualité de ta capture donc je vois pas bien mais peut-être juste une remarque : pourquoi faire un ShowColumns() avec autant de colonnes ? J’ai envie de dire qu’à ce compte-là autant prendre toutes les colonnes. A mon avis faire un ShowColumns() pour garder 80% des colonnes de ta sources de données est plus lent qu’en récupérer direct la totalité…

    Et pour réagir à ta problématique “…mais ma collection colTICKET ne récupérait pas mon numéro de Ticket créé juste avant…” :

    • une collection est une photo à un instant t d’une source de données

    • modifier ou créer un élément dans cette source de données n’a absolument aucun impact sur la collection correspondante

    • c’est donc à toi de mettre à jour ta collection pour qu’elle soit bien “synchro” avec ta source de données

    T’as 2 solutions :

    • soit tu refais un ClearCollect() pour réalimenter ta collection à partir de ta source de données (pas besoin de rafraîchir cette dernière) -> pas terrible en termes de perf de recharger tout juste parce-qu’un seul élément a été créé ou modifié

    • soit tu appliques à ta collection la même opération (de création ou de modif) qu’à ta source de données

    Ce que je fais personnellement :

    • lorsque je crée/modifie un élément dans une source de données à l’aide d’un Patch() je m’assure de bien récupérer l’élément en question en faisant : locNewOrModifiedItem = Patch(...)

    • ensuite, j’applique la même opération sur la collection correspondante : j’ajoute l’élément locNewOrModifiedItem dans la collection s’il s’agissait d’une création ou je mets à jour l’élément correspondant dans la collection à partir de locNewOrModifiedItem

    Par exemple :

    locNewItem = Patch(TICKET; Defaults(TICKET); {...});;nCollect(colTICKET; locNewItem)

    CommentID=cb8HRlRtMKVthrL, PostID=QwgjeaKmdvRNPuH

  • R3dKap

    Membre
    3 mai 2022 à 13h38 en réponse à: "Get Items" vs "Send HTTP request to sharepoint" ?

    @JLF je suis assez d’accord avec l’idée qu’une requête HTTP pour faire une mise à jour sur un champ ça n’a pas trop d’intérêt.

    L’action UpdateItem doit simplement être bien utilisée : seuls les champs obligatoires doivent être renseignés. Ceux qui ne le sont pas (et donc les Choices qui restent bien à Sélectionner un élément) ne seront pas modifiés. A toi de bien maîtriser la manipulation de l’action pour faire exactement ce que tu veux… 😉
    Le vrai point d’attention, par contre, ce sont les champs avec des valeurs par défaut, comme par exemple ENRG_actif qui va être positionné par défaut à Oui -> il faut penser à le rebasculer à VIDE :

    CommentID=6HG4WT5dypAV8LW, PostID=iyC6YuEdWQiyQst

  • R3dKap

    Membre
    3 mai 2022 à 10h50 en réponse à: Actions en cascade sans attente précédente

    @JLF mon avis…

    Si je comprends bien, toutes tes opérations de action_RECORD_num_1 jusqu’à action_TICKET_Record_1 dépendent en gros de action_Refresh_1 car tu as besoin de tes données les plus à jour possible pour faire les actions concernées.

    Ce que je ferais c’est de sortir le code de action_Refresh_1 (et donc supprimer le bouton correspondant) pour le mettre directement à la place du Select(action_Refresh_1). Car lorsque tu fais appel à la fonction Refresh(), Power Apps attends que le rafraîchissement soit terminé avant de poursuivre le code…

    Par contre je vois un problème potentiel plus grave dans ton approche : si action_TICKET_Record_1 a besoin des données récupérées par les actions de action_RECORD_num_1 à action_colHAB_get_1, rien ne te garantis que tes données auront été récupérées à temps pour les utiliser dans action_TICKET_Record_1. En effet, utiliser la fonction Select() c’est comme cliquer sur le bouton : là les clics vont s’enchaîner en moins d’une milliseconde, et potentiellement la récupération des données ne sera pas terminée que tu vas déjà créer ton enregistrement dans la table TICKET. Tu me suis ?

    Au passage, ton Concurrent() ici va te faire gagner 0,000001ms vu que la seule opération qui est parallélisée avec ton Select() c’est un Set() (qui est ultra rapide). Le Concurrent() a du sens lorsque tu veux par exemple paralléliser des chargements multiples qui peuvent potentiellement prendre du temps.

    Du coup, au vu de mes 2 dernières remarques, ce que je te suggère c’est de faire c’est ceci : tu vires tous tes boutons et tu parallélises les chargements des données dont tu vas avoir besoin pour créer ton ticket. Globalement ton code serait donc plutôt structuré ainsi (j’invente un peu hein vu que je connais pas exactement ton modèle de données) :

    Set(glbTICKET, Blank());nSet(glbETAPE, "Saisie Ticket");nConcurrent(n    Refresh(AGENT),n    Refresh(RECORD),n    Refresh(TICKET),n    Refresh(TECH),n    Refresh(HAB)n);nConcurrent(// Là je sais pas si c'est plutôt des LookUp() ou des ClearCollect() que t'as besoinn    ClearCollect(colRECORD, Filter(RECORD, ...)),n    ClearCollect(colTICKET, Filter(TICKET, ...)),n    ClearCollect(colTECH, Filter(TECH, ...)),n    ClearCollect(colHAB, Filter(HAB, ...))n);nPatch(TICKET; Defaults(TICKET); {...})

    Remarque générale : l’utilisation du Select() pour déclencher du code sur un bouton est utile lorsque l’on veut éviter de dupliquer le code sur un écran où il est utilisé à différent endroits. Mais ATTENTION à ne pas faire un Select() sur un bouton qui est sur un autre écran !!! Ce n’est pas du tout recommandé, voire ça ne marche plus désormais… Pour mutualiser du code il faut plutôt partir sur des fonctions dans des composants comme proposé par @Guillaume RENARD qui fait référence à mon article sur le sujet… 😉

    CommentID=pYojEl1fFqKa4d0, PostID=QwgjeaKmdvRNPuH

  • R3dKap

    Membre
    3 mai 2022 à 10h24 en réponse à: Power apps enregistre des données vide dans sharepoint

    Est-ce que toi (ou quelqu’un d’autre) avez branché un flux Power Automate sur cette liste, qui pourrait expliquer que les champs se remettent à blanc suite à une mise à jour de l’élément ?

    CommentID=G8VkFb90UjUQ2Up, PostID=2bfyc58DmLG22CM

  • R3dKap

    Membre
    2 mai 2022 à 12h31 en réponse à: Problème décalage de dates

    Ah si ça n’arrive que pour un utilisateur donné alors il faut se concentrer sur le compte de l’utilisateur ou peut-être même son poste de travail. Est-ce que son poste de travail est sur un fuseau horaire particulier ?

    Ca serait peut-être intéressant qu’il se connecte depuis un autre poste pour voir s’il a le même problème…

    CommentID=LvJKjgdJaCvHkDH, PostID=t5s6DKCgbmDnqiV

  • R3dKap

    Membre
    29 avril 2022 à 19h13 en réponse à: Problème décalage de dates

    @jonathan schulz vous avez vérifié les fuseaux horaires de quoi :

    • le compte de l’utilisateur ?

    • le site SharePoint ?

    Dans un contrôle sélecteur de date dans Power Apps il est possible de spécifier le fuseau horaire et le format. Comment est-il positionné ?

    CommentID=mX0aNZdLXSX6qmA, PostID=t5s6DKCgbmDnqiV

  • R3dKap

    Membre
    28 avril 2022 à 21h02 en réponse à: Champs obligatoire selon condition

    @Laure KERFOURN, @Geoffroy WAGNER a raison : l’idée c’est d’accéder à la valeur texte de la liste déroulante du statut.

    Perso, je le fais plutôt de cette manière : DataCardValue1.Selected.Value te renverras “Chantier“.

    Bien sûr, ta liste déroulante de statut ne s’appelle peut-être pas DataCardValue1. A toi de mettre le bon nom… 🙂

    Enfin, pour la formule à mettre dans la propriété Required de ton datacard de N° chantier, tu peux simplement le faire ainsi :

    DataCardValue1.Selected.Value = "Chantier"

    C’est tout. En effet, écrire If(A=B; true; false) revient à écrire A=B car un test d’égalité renvoie de lui-même toujours true ou false.

    CommentID=PxQg4cJbPAQGuU2, PostID=HDHDnwxH2PAioPP

  • R3dKap

    Membre
    28 avril 2022 à 20h55 en réponse à: Modifier une liste SharePoint lors de la réception d'un mail

    En fait, dans ton étape Définir une variable tu ne peux pas taper du code directement dans le paramètre Valeur. Dans ce paramètre tu ne peux y mettre que des constantes ou des références à d’autres “objets” (comme tu l’as fait pour le champ Objet du mail).

    Pour saisir une formule :

    • vide ton paramètre Valeur : si ton curseur de saisie est bien dans la zone de saisie tu vas avoir cette fameuse popup juste à côté :

    • clique sur l’onglet Expression de cette popup

    • tape ta formule dans la zone de saisie fx (cadre rouge)

    Et si à un moment donné dans ta formule tu dois faire référence à un objet de ton flow (comme le champ Objet du mail par ex.) :

    • place ton curseur de saisie dans ta formule là où tu veux y faire référence

    • clique sur l’onglet Contenu dynamique

    • clique sur l’objet ou la donnée en question

    • le code correspondant sera inséré au bon endroit

    Pour ce qui est d’extraire l’immat de l’objet de ton mail, voici la bonne formule :

    concat('F-',split(split(<ton objet de mail>,'F-')[1],' ')[0])

    Remplace <ton objet de mail> par ton champ Objet du mail.

    Tu remarqueras quelques éléments intéressants sur le code Power Automate :

    • les noms des fonctions ne sont pas sensibles à la casse

    • les chaînes de caractères s’indiquent entre apostrophes et non entre guillemets

    • les paramètres des fonctions sont séparés par des virgules et non des points-virgules

    Sinon ça serait trop facile si ça ressemblait exactement aux formules de Power Apps… 😁

    CommentID=v3Cf3pQrR8qZpCX, PostID=3nIvXEOnTF7YwWV

  • R3dKap

    Membre
    28 avril 2022 à 16h27 en réponse à: Filtre Galerie Power Apps

    C’est exactement ça ! 👍

    CommentID=da28uXEfofqt88h, PostID=u56z954yDLlkYZy

Page 55 sur 79