Réponses céées sur le Forum

Page 70 sur 84
  • R3dKap

    Membre
    15 mars 2022 à 8h53 en réponse à: Affichage conditionnel de 2 combobox

    Voilà, c’est précisément ce que j’allais te proposer de faire vu que tu as un Choices() dans le Items de ta combo.

    En effet la fonction Choices() génère un tableau à 2 colonnes (Id et Value) et comme je le disais l’opérateur in doit avoir une table à une seule colonne sur sa droite. Or, dans Power Apps, lorsque l’on écrit NomDeTable.NomDeColonne cela renvoie une table à une seule colonne, celle spécifiée.

    C’est pour cela qu’il fallait rajouter le .Value à chbEnveloppe.SelectedItems… 😉

    CommentID=sy2Dqj2KsncfCyu, PostID=CJBs2Kt0p4SMBH8

  • R3dKap

    Membre
    15 mars 2022 à 8h47 en réponse à: REGEX

    @Alexandre bizarre qu’il t’apparaisse tronqué le code de la regexp. T’as bien cliqué sur le lien See more juste en-dessous ?

    CommentID=KwUdZIQ4Z2Z40NR, PostID=SJP2lxAg8E5Dsu3

  • R3dKap

    Membre
    14 mars 2022 à 21h04 en réponse à: Colonne et Combobox

    @ChezWam tout d’abord une petite remarque sur le “wording” utilisé dans ton post (oui je suis plutôt perfectionniste là-dessus 😅) : “Le format de l’une des listes est vrai ou faux“. Tu voulais probablement dire : “Le format de l’une des colonnes de cette liste est vrai ou faux.“. 😉

    Ensuite, quel est le véritable type de colonne que tu as créé ? Une colonne de type Oui/Non ou une colonne de type Choix avec les valeurs “True” et “False” ?

    Parce-que du coup en fonction de ça ce ne sera pas la même solution pour filtrer ta datatable…

    Ceci étant dit, si ta colonne est de type Oui/Non (ce que je suppose), alors il te faut modifier le Items de ta combo box pour y mettre :

    Table({Text: "True"; Value: true}; {Text: "False"; Value: false})

    Quant à la valeur à blanc, si tu utilises une combo box (et pas une dropdown) l’utilisateur pourra choisir de ne pas choisir de valeur. Sinon, avec la dropdown y’a aussi moyen si tu positionnes sa propriété AllowEmptySelection à true mais je préfère bosser avec la combo box en général.

    Assure-toi aussi :

    • de désactiver la sélection multiple sur ta combo box

    • de positionner le DisplayFields de ta combo box à “Text” (pour afficher le libellé lorsque tu ouvriras la combo box pour choisir une valeur)

    Ensuite, ton filter tel que tu l’as écrit devrait fonctionner… Sinon n’hésite pas à revenir ici pour qu’on voie ce qui ne va pas…

    CommentID=c7dNGdSfMSWJcAQ, PostID=PXfttHXEcyodEtg

  • R3dKap

    Membre
    14 mars 2022 à 20h25 en réponse à: Affichage conditionnel de 2 combobox

    @Philippe CULOT @S dès lors que l’on manipule la propriété SelectedItems il faut s’intéresser au format des données du Items de la combo box.

    @Philippe CULOT qu’as-tu dans le Items de ta combo box chbEnveloppe ?

    N’oubliez pas aussi que l’opérateur in doit prendre sur sa droite une table à une seule colonne pour que sa fonctionne

    Autre remarque : écrire If(<test booléen>; true) revient à écrire <test booléen>. Et donc If("ASV" in ...; true) s’écrit simplement "ASV" in ... 😉

    CommentID=sCCmurPwjzuSOlq, PostID=CJBs2Kt0p4SMBH8

  • R3dKap

    Membre
    14 mars 2022 à 11h43 en réponse à: Error dans mon flux lié à une liste sharepoint

    @Jesp si ta colonne Date réponse est bien une colonne de type date dans ta liste SharePoint, alors il te suffit de mettre UtcNow() dans la partie droite de la condition, sans rien spécifier d’autre (pas besoin du formatDateTime()).

    CommentID=OREvPCRixbYsHwE, PostID=7pBBBnFKK4oGtYW

  • R3dKap

    Membre
    13 mars 2022 à 9h44 en réponse à: REGEX

    Bon, alors y’a la version officielle (mais elle est juste monstrueuse) :

    Et après j’ai trouvé celle-ci qui est plus simple :

    ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

    Je l’ai testé de mon côté, elle fonctionne.

    Dis-moi ce que t’en penses…

    CommentID=AWiSBtMxZxp9hbk, PostID=SJP2lxAg8E5Dsu3

  • R3dKap

    Membre
    13 mars 2022 à 9h35 en réponse à: REGEX

    Alors en fait, peu savent qu’en réalité énormément de caractères sont autorisés dans les adresses mails mais dans 99% des cas ce sont les caractères les plus courants qui sont utilisés. Je vais voir si je trouve une regex digne de ce nom…

    CommentID=MOoQuV7tp6JYnUw, PostID=SJP2lxAg8E5Dsu3

  • R3dKap

    Membre
    12 mars 2022 à 7h58 en réponse à: créer un evenement outlook _powerautomate-IDcalendrier

    @Laurent CARRIERE sauf erreur de ma part ce n’est pas possible. Un calendrier est un objet personnel où seul le propriétaire peut créer des éléments.

    Du coup, en solutions de contournement j’imagine 2 possibilités :

    1. Tu crées l’événement dans TON calendrier en invitant la personne concernée

    2. Tu te débrouilles pour que ce soit la personne concernée qui déclenche un flux qui crée l’événement dans son calendrier à lui

    J’ai bien trouvé des personnes qui disent que c’est possible via l’API Graph mais c’est à vérifier :

    Sinon, voici deux Ideas où tu peux voter pour pousser la fonctionnalité auprès des équipes Microsoft :

    CommentID=6RDDwmii9qM84Lr, PostID=YHejoSREXic23Yk

  • R3dKap

    Membre
    12 mars 2022 à 7h36 en réponse à: REGEX

    Quelles sont tes contraintes précisément ? Quelles règles doivent suivre le format de l’adresse mail dans ton cas ?

    CommentID=TzWe4K0CIIeHLWC, PostID=SJP2lxAg8E5Dsu3

  • R3dKap

    Membre
    11 mars 2022 à 9h43 en réponse à: Error dans mon flux lié à une liste sharepoint

    @Jesp enlève juste les guillemets :

    field_3 ne null

    😉

    CommentID=LuKZ11n5PaggD4G, PostID=7pBBBnFKK4oGtYW

  • R3dKap

    Membre
    11 mars 2022 à 9h37 en réponse à: REGEX

    Salut @Alain,

    Pour construire, tester et vérifier mes REGEX j’utilise ce site :

    Essaie de voir si tu t’en sors… Là j’ai pas le temps de regarder de suite, mais je pourrais y jeter un oeil ce week-end…

    CommentID=joCvmTpjQqM5fRr, PostID=SJP2lxAg8E5Dsu3

  • R3dKap

    Membre
    11 mars 2022 à 9h23 en réponse à: Migration de dataflows entre environnements

    Pour des gros volumes j’utilise Power Shell (avec SharePoint). Sais pas si ça existe pour Dataverse. Et c’est p’têt une fausse bonne idée… 😊

    CommentID=yEm0KduBZFwf6vZ, PostID=3KQEiHzf1bmJDoY

  • R3dKap

    Membre
    10 mars 2022 à 21h45 en réponse à: Error dans mon flux lié à une liste sharepoint

    Salut @Jesp,

    Est-ce que tu peux cliquer sur le petit icône avec les deux flèches qui est par-dessus le libellé “Requête de filtre” et me mettre une capture de ce que cela affiche dans la zone juste en-dessous stp ?

    Et puis me donner aussi le nom interne de ta colonne “Date réponse ?“.

    CommentID=k6W7aWeUc77e268, PostID=7pBBBnFKK4oGtYW

  • R3dKap

    Membre
    9 mars 2022 à 9h32 en réponse à: Enregistrement du "Screen" en PDF dans une liste Sharepoint

    Oui c’est possible. Il faut que tu voies avec la personne de ton entreprise qui est Power Platform Admin ou juste Admin Global…

    CommentID=uXEQ74Z7ttJISxv, PostID=ofR9qnVxIcg8WY2

  • R3dKap

    Membre
    9 mars 2022 à 9h30 en réponse à: Comparaison de deux tables via champ lookup

    @Laurent CARRIERE et @Ludovic je vais essayer de vous amener à comprendre pourquoi vous n’y arrivez pas afin de vous donner l’autonomie de le faire par vous-même par la suite…

    En fait, il y a confusion dans les données que vous manipulez. Mais avant toute chose, il faudrait idéalement améliorer la nomenclature des objets et des variables parce-que là, même moi je m’y perds…
    Ce que je recommande c’est d’utiliser en tout temps la nomenclature suivante (j’aimerais tellement que TOUS les développeurs Power Apps du monde entier suivent la même nomenclature… ce serait tellement plus simple pour se parler et lire le code des p’tits copains… 😀) :

    • collection locale : colNomDeLaCollection (à définir avec les fonctions ClearCollect(), Collect(), Filter(), …)

    • variable globale : gloNomDeLaVariableGlobale (à définir avec la fonction Set())

    • variable locale : locNomDeLaVariableLocale (à définir avec la fonction UpdateContext())

    • colonne d’une liste SharePoint (nom interne) : scNomDeLaColonne (colonne à créer en 2 temps comme expliqué ici au paragraphe Création des colonnes)

    Vous noterez au passage le jeu de majusucules/minuscules A RESPECTER pour plus de lisibilité… 😉

    Pour en revenir à la formule qui ne fonctionne pas…

    Si j’ai bien compris la manière dont sont organisées les données :

    • une liste RESERVOIR avec une colonne IDRESERVOIR de type texte (en gros c’est le catalogue des réservoirs)

    • une liste NETTOYAGE avec une colonne IDRESERVOIR de type recherche qui pointe vers la liste RESERVOIR (sur le champ IDRESERVOIR je suppose)

    Là encore, déjà, aussi un petit souci de nomenclature :

    • la liste contenant TOUS les réservoirs devrait s’appeler RESERVOIRS au pluriel (c’est tout bête mais ça représente mieux la réalité et dans le code par la suite le fait de voir le pluriel me fait potentiellement comprendre plus facilement que c’est une liste) ; à la rigueur CatalogueReservoirs aurait même mieux… bref…

    • idem pour le nom de la liste NETTOYAGE qui serait mieux lotie avec un ‘S’

    • dans la liste NETTOYAGE, la colonne IDRESERVOIR est mal nommé car on ne nettoie pas un IDRESERVOIR mais un RESERVOIR -> donc autant l’appeler RESERVOIR tout simplement : en gros, le modèle de données, dans sa nomenclature, doit refléter la réalité (je nettoie quoi ? un réservoir -> j’appelle ma colonne RESERVOIR)

    Et là on en arrive au plus important : la structure de cette colonne de recherche IDRESERVOIR de la liste NETTOYAGE. Comme vous le savez sa structure est la suivante :

    {n    Id: ...;n    Value: ...n}

    La première colonne Id va contenir la valeur de la colonne ID (remarquez ici les majuscules) de l’élément dans la liste liée RESERVOIR. Et la colonne Value va contenir la valeur de la colonne liée (ici IDRESERVOIR) de l’élément dans la liste RESERVOIR.

    Voilà… Il faut bien avoir ça en tête au moment où on manipule les données.

    Maintenant, supposons que l’on veuille mettre en place le filtrage proposé par @Ludovic. Pour rappel, l’idée c’est de filtrer la liste RESERVOIR pour ne conserver que les réservoirs qui ne sont jamais utilisés dans la liste NETTOYAGE (colonne de recherche IDRESERVOIR).

    Donc, pour faire ça, on va donc écrire quelque chose qui ressemble à ça :

    Filter(RESERVOIR; <condition de filtrage>)

    La condition de filtrage va consister à regarder, pour le RESERVOIR en cours (en effet, n’oubliez pas que la fonction Filter() fonctionne comme une boucle où chaque élément de la collection en premier paramètre va être confronté à la condition spécifiée dans le 2è paramètre), s’il existe des lignes dans NETTOYAGE dont la colonne IDRESERVOIR pointe sur ce réservoir. S’il n’en existe aucune alors on “conserve” le réservoir en question et on sait qu’il n’a pas été nettoyé. On va utiliser la fonction CountIf() pour vérifier l’existence de ces lignes.

    La formule se complète donc ainsi :

    Filter(n    RESERVOIR; n    CountIf(NETTOYAGE; <condition de comptage>)=0n)

    Que veux-t-on faire dans la condition de comptage ? On veut rechercher des éléments de NETTOYAGE IDRESERVOIR pointe sur le réservoir en cours du Filter() (de la boucle). Or souvenez-vous, IDRESERVOIR dans NETTOYAGE c’est {Id: <ID dans RESERVOIR>; Value: <IDRESERVOIR dans RESERVOIR>}.

    Donc, ma condition va être la suivante :

    IDRESERVOIR.Id = ID (celui de RESERVOIR)

    Mais y’a un souci : il existe aussi une colonne ID dans NETTOYAGE. Comment Power Apps va savoir si ID c’est celui de RESERVOIR ou de NETTOYAGE dans notre formule ? Il y a ambiguïté… Pour résoudre ce problème, on a 2 solutions :

    • soit on utilise l’opérateur de désambiguïté : IDRESERVOIR.Id = RESERVOIR[@ID] (on précise que la colonne ID est celle de la liste RESERVOIR)

    • soit on nomme temporairement la liste RESERVOIR dans la fonction Filter() pour pouvoir y faire référence ailleurs dans la formule : Filter(RESERVOIR As ItemReservoir; ...) et la condition du CountIf() serait alors IDRESERVOIR.Id = ItemReservoir.ID

    Je préfère la 2è solution. Et notre formule finale est donc la suivante :

    Filter(n    RESERVOIR As ItemReservoir; n    CountIf(NETTOYAGE; IDRESERVOIR.Id = ItemReservoir.ID)=0n)

    Au passage, lorsque je tape mon code je procède par étapes : j’écris les fonctions en partant du niveau le plus haut et je rentre en profondeur au fur et à mesure. Ca m’évite des erreurs de parenthèses et des oublis de paramètres. Et donc, j’écris les choses ainsi :

    Filter(RESERVOIR As ItemReservoir; )

    Puis :

    Filter(RESERVOIR As ItemReservoir; CountIf()=0)

    Puis :

    Filter(RESERVOIR As ItemReservoir; CountIf(NETTOYAGE; IDRESERVOIR.Id = ItemReservoir.ID)=0)

    Voilou… En espérant que vous avez bien suivi la logique et vous saurez l’appliquer à d’autres cas de figure… 😉

    CommentID=sU0c4GHCY5Bgb5X, PostID=8LH1lVbKjN748zo

Page 70 sur 84