Réponses céées sur le Forum

Page 23 sur 68
  • DavidZed

    Membre
    3 octobre 2023 à 12h32 en réponse à: Filtrer sources de données suivant une variable

    Hello Florian Gajdos ,

    Pour simplifier, tu peux directement définir ta variable depuis ta source de données, sans passer par ta collection ( Je pars du principe que tu as une colonne ‘Zone‘ et une colonne ‘Centre‘ dans ta liste ‘Liste utilisateurs’ ) :

    Set(n    VarDroitsUtilisateur;n    LookUp(n        'Liste utilisateur';n        Email.Email = User().Emailn            )n)

    Et on ne précise pas de colonne dans le 3eme argument du lookup, car on va avoir besoin de plusieurs colonnes (idéalement, on peut mettre un ShowColumns() pour ne récupérer que les colonnes utiles).

    Ensuite, dans les gleries où tu souhaites afficher les éléments filtrés en fonction de l’utilisateur, tu pourras mettre en test logique :

    Centre = VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Centre)

    Zone= VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Zone)

    Ce qui signifie :

    • 1ere condition : uniquement les enregistrement dont le centre est celui de mon utilisateur, ou si mon utilisateur n’a pas de centre : les enregistrement de n’importe quel centre.

    • 2 eme condition : uniquement les enregistrement dont la zone est celle de mon utilisateur, ou si mon utilisateur n’a pas de Zone : les enregistrement de n’importe quelle zone.

    Ce qui donne si tu as une liste de lieux d’intervention avec également une colonne Zone et une colonne Centre :

    Filter(n'Lieux d'intervention';nCentre = VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Centre);nZone= VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Zone)

    CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

    • DavidZed

      Membre
      3 octobre 2023 à 15h30 en réponse à: Filtrer sources de données suivant une variable

      Alors pour des colonnes recherche :

      Filter( 'Lieux d'intervention'; nCentreID.Id = VarDroitsUtilisateur.Centre.Id || IsBlank(VarDroitsUtilisateur.Centre);nZoneId.Id= VarDroitsUtilisateur.Zone.Id|| IsBlank(VarDroitsUtilisateur.Zone)

      mieux vaut se baser sur l’Id que la value L’ID est une clé unique

      SubCommentID=o2fpYAFeaNRhAG6, CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

  • DavidZed

    Membre
    29 septembre 2023 à 21h15 en réponse à: Contrôle de champs "texte" pour plaque d'immatriculation

    Hello Jean ,

    Dans ce cas de figure, on peut utiliser les fonctions :

    • IsMatch() : Pour s’assurer qu’une chaîne respecte un certain format

    • Upper() : pour transformer les minuscules en majuscules

    • Right() et Left() : Pour extraire des caractères d’une chaîne

    • Substitute() : Pour remplacer des caractères dans une chaîne

    Tu peux ajouter un label texte pour indiquer si la saisie est correcte (attention syntaxe en anglais) :

    If(IsMatch(n    With({ // On nomme des constantes pour simplifier le la formule qui suitn        Immat:TextInputSaisie.Text,n        Sep1:Left(TextInputSaisie.Text,3),n        Sep2:Right(TextInputSaisie.Text,3)},nn        Upper( // on transofrme les minuscules en majusculesn            Substitute( n                Substitute( n                    Immat,Sep1,Left(Sep1,2)&"-"),// On remplace les 3 premiers caractères par les 2 premiers suivi de "-" = on remplace le 3eme caractère par un tiretn                    Sep2,"-"&Right(Sep2,2) // On remplace les 3 derniers caractères par un "-", suivi par les 2 derniers = on remplace le 7eme caractère par un tiretn                    ))),n    Match.Letter&Match.Letter&Match.Hyphen&Match.Digit&Match.Digit&Match.Digit&Match.Hyphen&Match.Letter&Match.Letter), // On verifie que le tout correspond au format : 2 lettres, tiret, 3 chiffres, tiret, deux lettresn    "Format OK" ,// Si ouin    "Merci de respecter le format ''AA-000-AA''" ) //Sinon

    ce qui devrait donner :

    Tu peux ensuite utiliser le IsMatch et son contenu pour conditionner l’update du datacard

    CommentID=5M4aIydMuSvUrQX, PostID=erpIzqrXOw59kfW

  • DavidZed

    Membre
    28 septembre 2023 à 11h29 en réponse à: Powerapps et liste sharepoint + bouton
    Petite erreur de syntaxe : Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({Titre : User().FullName & " - " &Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    Si tu as un doute sur une propriété de sortie, tu peux t’aider de la saisie assistée des formules, si tu tapes User(). dans ta barre de formule, il te mettra la liste des propriétés disponible sur cette fonction

    CommentID=QvvKEyCqotp8hci, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    28 septembre 2023 à 6h35 en réponse à: Powerapps et liste sharepoint + bouton

    Alors pour celle-ci, il y a un “:” en trop :

    Pour l’erreur de type attendu sur le champ prestation, au temps pour moi j’avais lu un peu vite et il me semblait que c’était un champ type texte. Du coup c’est au niveau de tes boutons réponses qu’il faudra changer :

    UpdateContext({ctxPresta : "OFPOP"})

    en

    UpdateContext({ctxPresta : { Value : "OFPOP" } } )

    Je te conseille de garder ce lien vers l’excellent blog Sharepains en favoris, cet article référence les différentes manières de patcher des colonnes complexes de Sharepoint.

    (attention, l’auteur a volontairement laissé la syntaxe d’origine, qui inclut nottament le type odata : '@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference qui devait être précisé obligatoirement, depuis un peu plus de deux ans la syntaxe a été simplifiée)

    CommentID=PM03ILIx0Rcm5kN, PostID=KgHi4mBKuf8BEIo

  • Argh en effet c’est plutôt hardcore comme effet de bord. Comme quoi la backup d’environnement c’est pas tout à fait anodin 🙁

    Si vous avez le Coe starter kit ou un équivalent pour la gouvernance, tu peux peut-être automatiser un mail / une notif pour chaque app présente sur l’environnement vers ses propriétaires et copropriétaires pour leur demander de mettre à jour leurs liens ?

    J’espère que tout rentrera dans l’ordre assez vite, c’est vrai que bosser sur des environnements avec des centaines de milliers d’utilisateurs et plusieurs milliers d’applications, pour y avoir été confronté, on a parfois l’impression de marcher sur des œufs à chaque action 😨

    CommentID=FrryYjqtakpoEUp, PostID=ihjFRltgOehdmfx

  • DavidZed

    Membre
    27 septembre 2023 à 9h30 en réponse à: Transferer vers power apps for teams

    Tu dois pouvoir récupérer la structure (et les données) de chaque table avec un dataflow (Outil importer des données)

    Il y aura peut être quelques transformations à faire en Power Query :

    CommentID=oD170WZRyRUwXwc, PostID=fyZZkwMdGOYXBnB

  • DavidZed

    Membre
    27 septembre 2023 à 6h30 en réponse à: Transferer vers power apps for teams

    Bonjour Fred Evellin ,

    Si on peut facilement convertir un environnement D4T (Dataverse for Teams) vers un environnement Dataverse, l’inverse n’est malheureusement pas possible.

    D4T a une version “light” de Dataverse.

    Ce que tu peux essayer de faire :

    Reproduire tes tables dans l’environnement D4T (en respectant au maximum les types et noms de colonnes)

    exporter ton app en .zip depuis l’éditeur et l’importer dans l’éditeur D4T (pas sûr que ça fonctionne non plus)

    Pour ce qui est des licences, il n’y a pas de licence unique avec nombre d’utilisateurs illimités

    Par contre il est possible d’affecter des app passes à l’environnement et d’autoriser l’application à consommer ces passes. Dans ce cas, chaque utilisateur qui va lancer l’application va se voir attribuer une licence per app à 5$

    CommentID=3oGKZ4KbnU6cV4R, PostID=fyZZkwMdGOYXBnB

  • DavidZed

    Membre
    27 septembre 2023 à 6h11 en réponse à: Powerapps et liste sharepoint + bouton

    Bonjour Francois ,

    Tu peux partir sur cette approche : Utiliser trois variables pour stocker les réponses pour chacun des groupes.

    Sur le OnSelect des boutons du groupe 1 (exemple) :

    UpdateContext({ctxDesk-Tel : {Value: "Desk1"}}) // Value car colonne de type choice

    Pour le groupe 2

    UpdateContext({ctxUser : "JZ"})

    Pour le groupe 3

    UpdateContext({ctxPresta : "OFPOP"})

    Ensuite il te faudra un bouton “Valider” pour patcher ta source de données :

    Patch('Ta liste Sharepoint'; Defaults('Ta liste Sharepoint') ; { desk-tel : ctxDesk-Tel ; User: ctxUser ; Prestation : ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({ctxDesk-Tel : Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    et enfin pour chaque groupe de boutons, tu pourras mettre son DisplayMode qui change en fonction de la présence de la réponse précédente :

    Pour le groupe 2

    If(IsBlank(ctxDesk-Tel) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    Pour le groupe 3

    If(IsBlank(ctxUser) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    Pour le bouton “valider”

    If(IsBlank(ctxPresta) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    CommentID=8aU6jOqvVD95zlM, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    26 septembre 2023 à 6h55 en réponse à: Disparition des contrôles

    Pour ma part j’ai constaté 3 bugs dans le studio en ce moment :

    • Tous les contrôles disparaissent de l’écran, la zone de prévisualisation affiche une page blanche vide

      • Il suffit de cliquer sur un autre écran et revenir sur le 1er

    • L’écran devient entièrement gris (menus de navigation et paramètres inclus)

      • Rafraichissement de la page au niveau du navigateur obligatoire

    • La barre de formule classique est vide et inutilisable

      • Rafraichissement de la page au niveau du navigateur obligatoire

    CommentID=KtxNMKvgNTZseZ6, PostID=DytAawLzZ66K4cu

  • DavidZed

    Membre
    2 octobre 2023 à 18h01 en réponse à: Fonction trie de date et modification de colonne

    Hello, sauf erreur de ma part, dans ce cas de figure, il faut utiliser UpdateIf(), avec les mêmes arguments : Source, condition et update :

    UpdateIf(masource ; date=ThisItem.MaDate ; {Title : "Fermeture"} )

    Bene , à noter que tu peux utiliser différents opérateurs avec cette fonction : >, <, <=, >=, <>

    SubCommentID=9opQgDHWkTY1wyv, CommentID=clDO2uD70BSNwgV, PostID=Ueg5xaSXBkM9TZ5

  • DavidZed

    Membre
    1 octobre 2023 à 9h58 en réponse à: Contrôle de champs "texte" pour plaque d'immatriculation

    Super ypicot !

    J’ai toujours évité les regex autant que je le pouvais à case de cette syntaxe qui tient presque de l’incantation vaudou (et la doc MS learn est assez succincte sur ce volet). Merci car pour le coup, ta réponse démystifie plutôt bien le principe !

    ça vaudrait presque un article dans la base de connaissances 🙂

    SubCommentID=SzaZqjmzcX09H8w, CommentID=IBrEsTk6G2ibufk, PostID=erpIzqrXOw59kfW

  • DavidZed

    Membre
    28 septembre 2023 à 9h57 en réponse à: Powerapps et liste sharepoint + bouton

    Tout est dans le message d’erreur, en effet la colonne Titre / Title est une colonne imposée par Sharepoint qui est toujours obligatoire.

    Tu peux en profiter y renseigner une référence en fonction de l’utilisateur et de la date par exemple :

    UpdateContext({Titre : User().DisplayName & " - " Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    SubCommentID=Vo2fSH3LBk757iA, CommentID=XAaSW6Iw0WeOKlM, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    27 septembre 2023 à 9h20 en réponse à: Powerapps et liste sharepoint + bouton

    Si tu as changé le type de colonne en texte alors il faut modifier la formule, car là tu fournis un record, essaies sans le {Value: } :

    UpdateContext({ctxDesktel : "Desk1"})

    SubCommentID=pUou90d0VjG2ZER, CommentID=TFgHzXgMyB4IfyO, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    27 septembre 2023 à 6h14 en réponse à: Mettre a jour une liste lors d'une modification de fichier

    Hello, non je n’ai jamais eu à procéder ainsi, généralement j’ajoute simplement des colonnes de métadonnées à la bibliothèque, cela permet la plupart des fonctionnalités des listes

    SubCommentID=yKN81rvHt5igFuO, CommentID=QRKcIbzOAkNTtut, PostID=OiyxmNyMqBkAz64

Page 23 sur 68