problème d'enregistrement powerapps vers excel (onedrive)

Étiquetté : ,

  • problème d'enregistrement powerapps vers excel (onedrive)

    Posté par spiritoftravel sur 29 mars 2022 à 6h31

    Bonjour à tous,

    je découvre depuis ce weekend power apps et j’adore cette application très simple dans la prise en main et la compréhension. j’ai commencé ce projet pour un prospection avec comme base de données un tableau Excel sur mon onedrive pro. la partie du haut (menus déroulants et tableau) fonctionnent parfaitement, en bas (formulaire, calendrier, case d’option, user name…) c’est OK.

    je bute depuis hier sur la phase enregistrement de la partie du bas. Je voudrais écrire les dates, textes du formulaire ou texte des choix bouton qui seront cochés dans ma base excel case en jaune. j’ai essayer avec PATCH, mais apparemment il me manque une info pour que cela fonctionne. lea case avec un 1 dedans est là pour connaitre la ligne de l’enregistrement.

    par avance merci de votre aide.

    je joins les images au cas ou !!

    PostID=aqy3ufsP9XfCUXf

    R3dKap a répondu Il y a 7 mois, 3 semaines 1 Membre · 10 Réponses
  • 10 Réponses
  • R3dKap

    Membre
    29 mars 2022 à 13h09

    Bonjour @spiritoftravel,

    Est-ce que tu peux nous montrer ce que tu avais déjà essayé comme fonction Patch() ?

    CommentID=B3oUOBt73KXBG7A, PostID=aqy3ufsP9XfCUXf

  • spiritoftravel

    Membre
    29 mars 2022 à 13h56

    oui, je crois que je suis un peu déformé par VBA dans mes écritures de fonctions.

    mais l’idée est de coller dans le champ compte_rendu de mon tableau excel (filtrer sur ne numéro d’enregistrement de la ligne) le texte du formulaire.

    Patch(Tableau1;Filter(ID1.SelectedText);(Tableau1.Compte_rendu=DataCardValue4))

    CommentID=E0rLK0zj33aDvzZ, PostID=aqy3ufsP9XfCUXf

  • R3dKap

    Membre
    29 mars 2022 à 14h28

    Ok, alors voici plutôt à quoi devrait ressembler ton Patch() :

    Patch(n    Tableau1;n    LookUp(Tableau1; ID=ID1.Selected.Value);n    {n        Compte_rendu: DataCardValue4.Textn    }n)

    Quelques explications…

    1. La fonction LookUp() te renvoie un enregistrement de ton Tableau1 pour la condition spécifiée (j’ai supposé ici que ID1 est une dropdown list où ton champ qui affiche la valeur s’appelle bien Value)

    2. Les champs à mettre à jour doivent être placés entre accolades {…}

    3. Ton DataCardValue4 est un contrôle. Il faut aller jusqu’à spécifier la propriété que tu veux ramener pour alimenter Compte_rendu, soit la propriété Text. Ca peut marcher en mettant seulement DataCardValue4 car la propriété Text est sa propriété par défaut, mais c’est pas bon d’avoir du code “implicite”. Autant être explicite dans ce que l’on manipule…

    Autre chose : lorsque tu vois une croix rouge à côté de ton bouton comme c’est le cas sur ta capture, c’est qu’il y a une erreur dans ta formule. Or tu as juste sélectionné le bouton et donc on ne voit pas où est située l’erreur. Pour voir l’erreur il faut cliquer à l’intérieur de la formule pour l’éditer et là il va te souligner en rouge ta formule. Et tu remarqueras que, normalement, il y a une partie de ta formule qui est soulignée dans un rouge plus prononcé que le reste -> c’est là qu’est située précisément l’erreur. Et pour voir le message d’erreur associé il faut que tu survoles avec ta souris cette zone précise de ton code qui est en rouge prononcé. Et si tu fais une capture pile à ce moment-là quand le message d’erreur apparaît dans l’infobulle alors j’ai tous les éléments pour t’aider plus rapidement… 😉

    CommentID=5xJRf7gD670Tou9, PostID=aqy3ufsP9XfCUXf

  • spiritoftravel

    Membre
    29 mars 2022 à 15h28

    Merci de ton retour, je comprends mieux maintenant… j’ai changé le formulaire par une entrée texte (CR) du coup, mais il reste apparemment une erreur soulignée en rouge (sur le =)

    CommentID=JDbaLhdwLrr7OZa, PostID=aqy3ufsP9XfCUXf

  • spiritoftravel

    Membre
    29 mars 2022 à 15h32

    j’ai changé aussi le format de ma colonne ID du tableau1 en format texte au cas ou, mais cela n’a pas changé l’erreur.

    dernier question, est ce qu’il est possible d’avoir le texte déjà présent dans le tableau qui s’inscrit dans la zone CR et pouvoir la modifier ?

    j’arrête là pour aujourd’hui. merci encore pour les conseils.

    CommentID=psHTHeEqG4OjKw7, PostID=aqy3ufsP9XfCUXf

  • R3dKap

    Membre
    29 mars 2022 à 20h13

    Ton signe “=” est souligné probablement parce-que tu as laissé ID1.SelectedText au lieu de mettre ID1.Selected.Value comme dans ma formule. Ou alors tu peux aussi mettre ID1.SelectedText.Value. Pourquoi ? Parce-que ce que les propriétés SelectedText et Selected ne renvoient pas directement la valeur sélectionnée dans la liste déroulante mais un enregistrement à une colonne appelée Value. C’est pour ça que tu dois écrire .Value derrière.
    Et après, si jamais l’erreur persiste sur le signe “=” c’est peut-être parce-que à gauche il considère que c’est du numérique (malgré le fait que tu aies changé le format de ta colonne dans ton fichier Excel) et à droite du texte. Pour éviter ça tu peux tout convertir en numérique pour faire le test : Value(ID) = Value(ID1.Selected.Value).

    Une petite remarque… Ton formulaire ne sert pas à grand chose dans ton cas. En effet, non seulement il ne contient qu’un seul champ Compte rendu (c’est un peu comme utiliser une Ferrari pour rouler à 10 à l’heure) mais surtout tu n’utilises pas la fonction SubmitForm() pour le valider et sauvegarder les données puisque tu le fais avec un Patch(). Donc pas de grand intérêt à le conserver. Tu peux aussi bien mettre un simple libellé avec une zone de saisie juste en-dessous et ça fera le même job…

    Sinon, est-ce que tu peux m’expliquer comment sur ton écran tu “passes d’une ligne à l’autre” de ton fichier Excel ? J’ai l’impression que ta liste déroulante ID1 est grisée. Est-ce que c’est en cliquant sur une ligne de ton datatable Infos Etablissements ? Peux-tu me dire ce que tu as mis dans la propriété Items de ton datatable ?
    Je suppose que tu y as mis un Filter(Tableau1; ...) avec des conditions de filtrage selon les valeurs de DL, Communes et Etablissements. Si c’est le cas, il existe une propriété Selected sur ton datatable qui te permet de savoir quel est l’élément actuellement sélectionné. Donc, à la rigueur tu peux te passer de ton ID1.
    Et du coup pour ramener dans ta zone de saisie Compte rendu la valeur déjà existante pour la ligne sélectionnée, normalement il suffit de mettre ceci dans la propriété Default : tonDataTableInfosEtablissements.Selected.Compte_Rendu.

    CommentID=VZS0PCQCfHt0qyA, PostID=aqy3ufsP9XfCUXf

  • spiritoftravel

    Membre
    30 mars 2022 à 16h39

    Bonsoir R3dKap,

    Merci beaucoup pour ton aide, tout fonctionne dans les enregistrements. Un bug restant, entre la date du calendrier PowerApps et la date enregistrée dans l’Excel, j’ai un jour de différence… 👽 tempus fugit ? ou la vérité est ailleurs ?.

    Bonne soirée

    CommentID=Xvj0xBaP7XXZvuJ, PostID=aqy3ufsP9XfCUXf

  • R3dKap

    Membre
    31 mars 2022 à 16h12

    Ca doit être dû au “décalage horaire” entre Power Apps et Excel : y’en a un qui doit être en UTC et l’autre pas… Un peu galère à résoudre… Je jetterai un œil demain… D’ici là essaie de voir si tu trouves pas quelque chose sur Google passk’il me semble que d’autres ont déjà été confrontés à ce pb…

    CommentID=1XEwHhciHzwxCGJ, PostID=aqy3ufsP9XfCUXf

  • Jeff Angama – MVP Office Apps & Services

    Membre
    10 mai 2022 à 8h06

    Question : Excel n’est pas trop lent à la mise à jour ? Patch etc ?

    J’avais observé de grosses lenteurs.

    CommentID=VjwGGKBLz9LG38b, PostID=aqy3ufsP9XfCUXf

  • R3dKap

    Membre
    12 mai 2022 à 7h48

    Je sais pas trop. Je dois avouer que je ne fais jamais de Power Apps avec du Excel. Les apps Power Apps + Excel doit être réservé aux applications qui ne servent qu’à la personne qui les servent car le principe de partager un fichier Excel qui est sur son OneDrive (qui est un stockage personnel) avec plusieurs personnes pour l’exploiter avec Power Apps, c’est pas recommandé.

    CommentID=EGpbrWW5A6yNFnL, PostID=aqy3ufsP9XfCUXf

Connectez-vous pour répondre.