Répondre à: Séparer 2 adresses emails – Split ";

  • Guillaume RENARD

    Membre
    21 avril 2022 à 13h50

    Bonjour @Mimii,

    Pour être sûr de bien comprendre ton besoin, tu disposes dans ton application Power Apps un champ texte, dans lequel l’utilisateur peut saisir plusieurs addresses mails, séparées par des “;” ?

    Peux-tu indiquer quel est le type de champ SharePoint que tu utilises pour sauvegarder cette donnée ? Et si possible nous montrer le code qui te permet de sauvegarder cette donnée dans SharePoint.

    J’en profite également pour te proposer une autre écriture dans la formule d’affichage du message d’erreur dans ton label. Tu utilises actuellement ceci :

    If(IsMatch(txtEmail.Text; Email) = false; "Invalid email"; "")

    La fonction IsMatch() renvoyant une valeur true ou false, tu peux directement écrire

    If(!IsMatch(txtEmail.Text; Email); "Invalid email")

    Tu peux également l’améliorer en testant chacune des addresses séparées par le “;” :

    If(n    Len(n        Concat(n            Split(TextInput1.Text;";");n            If(n                IsBlank(Trim(Result)) || (CountRows(MatchAll(Result; "@")) = 1 && IsMatch(Result;Match.Email));n                "";n                "Error"n            )n        )n    ) > 0; "Invalid email"n)

    La fonction Concat() permet ici de vérifier pour chacune des entrées du tableau de valeurs renvoyées par la fonction Split(), si celle-ci respecte bien le format d’email.

    J’ai ajouté deux éléments dans la condition If() :
    – le premier pour ne pas remonter d’erreur si un “;” ou “; ” a été ajouté à la fin du champ texte
    – le second pour valider que c’est au format attendu : IsMatch(Email) ET avec un seul “@” (la fonction IsMatch() renvoyant true si l’addresse mail contient deux “@”)

    Je mesure enfin la longeur de la chaîne renvoyée par la fonction Concat()

    Avec cette formule, les entrées suivantes sont bien remontées en erreur :
    – test@test@test.com
    test@test.com; test

    Celle-ci est en revanche considérée comme correcte :
    test@test.com;

    CommentID=juvH0XeAMxOFgw2, PostID=rfGsKIJq3osCCIZ