
problème d'enregistrement powerapps vers excel (onedrive)
Étiquetté : best practices, datatable
problème d'enregistrement powerapps vers excel (onedrive)
Posté par spiritoftravel sur 29 mars 2022 à 6h31Bonjour à 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 1 année, 2 mois 1 Membre · 10 Réponses- 10 Réponses
Bonjour @spiritoftravel,
Est-ce que tu peux nous montrer ce que tu avais déjà essayé comme fonction Patch() ?
CommentID=B3oUOBt73KXBG7A, PostID=aqy3ufsP9XfCUXf
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
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…
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)
Les champs à mettre à jour doivent être placés entre accolades {…}
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
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
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
Ton signe “=” est souligné probablement parce-que tu as laissé
ID1.SelectedText
au lieu de mettreID1.Selected.Value
comme dans ma formule. Ou alors tu peux aussi mettreID1.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 unFilter(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
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
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
Question : Excel n’est pas trop lent à la mise à jour ? Patch etc ?
J’avais observé de grosses lenteurs.
CommentID=VjwGGKBLz9LG38b, PostID=aqy3ufsP9XfCUXf
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.