Tous les articles

Business Central

« Modifier dans Excel » ne fonctionne pas : ce que Business Central vous dit vraiment

Modifier dans Excel se lie à la forme de votre page, pas à votre table : c'est pour ça que chaque application installée est une nouvelle façon de le casser. L'ordre de diagnostic, ce que dit chaque erreur documentée, et le cas où un export planifié vaut mieux.

Sur un fond de studio gris clair, une grille de tableur bleu nuit ; une colonne de cellules est légèrement soulevée hors de la grille et cerclée de turquoise, reliée par un fil turquoise à une petite fiche bleu nuit en forme de page, et une cellule ambre rompt l'alignement.

« Modifier dans Excel » ne fonctionne pas : ce que Business Central vous dit vraiment

Modifier dans Excel n’échoue presque jamais à cause d’Excel. L’action publie la page où vous vous trouvez sous forme de service web, et le complément lit et écrit à travers ce point de terminaison. Quand ça casse, ce qui a cassé est donc l’une de ces trois choses : les métadonnées générées à partir de votre page, le chemin d’installation du complément sur le poste, ou un bout d’AL incapable de tourner hors d’une session cliente.

Ces trois-là ont des symptômes différents, des correctifs différents, et aucun recouvrement. Les distinguer prend deux minutes si vous les vérifiez dans le bon ordre, et une journée sinon.

Que se passe-t-il réellement quand on clique sur Modifier dans Excel ?

Business Central a deux actions Excel qui n’ont presque rien en commun. Ouvrir dans Excel demande à la plateforme de produire un classeur contenant les données, en lecture seule. Modifier dans Excel charge le complément Excel de Business Central, qui lit les données via la page exposée comme service web OData et renvoie vos modifications par ce même point de terminaison.

Si personne n’avait l’intention de réécrire dans Business Central, Ouvrir dans Excel n’a aucun des modes de défaillance qui suivent, et pas mal de tickets s’arrêtent là.

Le complément s’appelle Microsoft Dynamics Office Add-in, il se distribue via l’Office Store, et l’action apparaît sur la plupart des pages liste et liste partielle derrière l’icône Partager.

Voici la partie qui explique tout le reste. Le service web généré est construit à partir de la page fiche, pas de la liste que vous regardiez. L’exemple de Microsoft lui-même : depuis la Liste des clients (page 22), choisir Modifier dans Excel génère un service web qui expose les champs de la Fiche client (page 21). Il contient tous les champs de page définis sur cette fiche, et les champs de table uniquement s’ils correspondent à un champ de page ou s’ils appartiennent à la clé primaire.

D’où la phrase à retenir : Modifier dans Excel se lie à la forme de votre page, pas à votre table. Chaque extension qui touche cette fiche modifie la surface que le complément doit décrire.

Travaillez donc par symptôme : le complément se charge-t-il, les données arrivent-elles, une ligne modifiée se publie-t-elle, plusieurs lignes se publient-elles. Chaque étape échoue pour une raison différente.

Pourquoi le complément ne se charge pas ou ne se connecte pas ?

Commencez par le poste, c’est le moins cher à éliminer. Microsoft indique clairement que le complément fonctionne uniquement sous Windows. Ouvrir le classeur dans Excel dans un navigateur est le test documenté par Microsoft quand la connexion échoue, mais le complément de bureau lui-même est réservé à Windows. Un utilisateur sur Mac qui signale que Modifier dans Excel est cassé ne décrit généralement pas un bug.

Si le message est « Add-in Warning: This add-in is no longer available », le complément est bien déployé de façon centralisée mais cet utilisateur n’a jamais reçu l’accès, ou bien il lui est interdit d’installer des compléments localement.

Vient ensuite la panne que personne ne relie à sa cause. Chaque fichier Excel créé par Modifier dans Excel porte un identifiant de complément. Quand une organisation bascule entre acquisition individuelle et déploiement centralisé — dans un sens comme dans l’autre — un identifiant différent est attribué et l’ancien est bloqué. Les anciens classeurs s’ouvrent toujours, ils cessent simplement de s’actualiser et de publier. Le symptôme ressemble à une corruption de fichier ; la cause est une décision de déploiement prise des semaines plus tôt par quelqu’un qui n’a jamais ouvert ces classeurs.

Trois autres cas qui produisent des tickets « ça ne marche pas » aux correctifs sans rapport :

  • Le déploiement centralisé peut mettre jusqu’à 24 heures à atteindre l’Excel d’un utilisateur. Rien n’est encore cassé.
  • Avec plusieurs environnements, le guide Excel Add-in Centralized Deployment doit tourner sur chacun d’eux, même si la partie Microsoft 365 n’est configurée qu’une fois.
  • Si les données n’arrivent jamais, regardez le nom de société. Un nom de société contenant des caractères spéciaux empêche le complément de se connecter.

L’on-premise en ajoute deux. Si l’environnement n’a jamais été configuré pour le complément, l’action Modifier dans Excel n’est pas disponible du tout — rien à dépanner côté poste. Et une connexion qui démarre puis s’interrompt sans aboutir pointe vers la mise à jour du complément de juillet 2022, qui exige une modification de configuration Microsoft Entra — on-premise uniquement, les environnements en ligne n’ont jamais été touchés.

Que signifie « Metadata was unable to be retrieved for entity » ?

Le message complet est Metadata was unable to be retrieved for entity <entity name> as it was not found, et il signifie que Business Central n’a pas pu générer les métadonnées du service web pour cette page, devenue trop complexe à traiter.

La cause documentée principale est une collision de noms entre extensions. L’exemple de Microsoft met en scène deux applications qui ajoutent chacune un champ de page nommé ShoeSize sur la Fiche client, adossé à deux champs de table différents. Une extension ne peut pas créer un champ de page portant le nom d’un champ déjà présent, mais rien n’empêche deux extensions d’entrer en collision entre elles, et aucun des deux éditeurs ne voit le champ de l’autre.

Une seule extension peut aussi tout bloquer. Si un CardPart est intégré à la page et que sa SourceTable ne correspond pas à la table source de la page hôte, l’algorithme évalue les champs de la partie et s’arrête. Le correctif consiste à poser la bonne SourceTable sur la partie. Quand une partie doit vraiment vivre sur plusieurs pages sans table source unique, Microsoft recommande un CardPart distinct par page hôte, la logique commune étant déportée dans un codeunit.

La seule méthode d’isolement documentée consiste à désactiver une par une les extensions qui touchent la page, puis à lire le code de celle qui casse. C’est aussi pourquoi l’erreur revient : chaque application installée est une nouvelle chance de collision sur une page que vous n’avez pas touchée — le coût d’entretien permanent de la personnalisation de Business Central, payé par une fonctionnalité que personne ne croyait concernée.

Pourquoi les modifications refusent-elles de repartir vers Business Central ?

Les données arrivent, l’utilisateur modifie, la publication échoue. Quatre familles distinctes derrière un symptôme unique.

Une extension bloque le travail de publication. Le test documenté par Microsoft : ouvrir le classeur dans Excel dans un navigateur, et si la page est étendue ou personnalisée, retirer les extensions puis réessayer.

Le complément hérite des limites de l’API. Il communique via l’API v2.0, donc toute limite de cette API s’applique ici — la même couche OData sur laquelle roule une intégration par API Business Central. L’AL qui a besoin d’un client ne peut pas s’exécuter : une boîte de confirmation utilisée comme logique de validation bloque la publication. Quand cette confirmation est négligeable dans ce contexte, le contournement documenté est de la conditionner, par exemple avec if Session.CurrentClientType() <> ClientType::ODataV4 then.

Deux pages standard ont des limites nommées. Sur les commandes vente, régler Autre adresse d’expédition sur Ship-to ouvre la liste des adresses d’expédition en fenêtre modale, et produit une erreur indiquant qu’un rappel client a été tenté pour exécuter la page 301 en modal — les rappels clients ne sont pas pris en charge. Sur le journal projet, modifier le Prix unitaire met à jour la Remise ligne au lieu du Montant ligne, parce que la logique en cascade repose sur xRec, qui se comporte différemment via les API.

Une ligne passe, plusieurs échouent. Celle-ci a un vrai correctif et pas un contournement. Elle survient quand les appels OData embarquent des FlowFields et des champs situés hors du contrôle repeater, qui entrent alors dans le calcul de l’eTag. Sur la page Services web, pour la page publiée concernée, cochez Exclude Non-Editable FlowFields et Exclude Fields Outside of the Repeater. Les deux cases sont masquées par défaut et doivent être affichées par personnalisation, et les deux se règlent par page publiée — il n’existe pas d’interrupteur global.

Un dernier message à savoir reconnaître. Si Excel prévient que certains filtres appliqués sur la page ne sont pas disponibles dans Office et les liste comme retirés, et que le champ vient d’une extension AL, le nom du champ de page et celui du champ de table sous-jacent doivent être identiques.

Quand faut-il arrêter de faire passer un état par Modifier dans Excel ?

Une grande part de ce pour quoi les gens utilisent Modifier dans Excel n’est pas de la modification. C’est sortir une liste filtrée de Business Central, souvent selon un calendrier, vers un fichier que quelqu’un d’autre consomme. Pour ce travail-là, toute la surface de panne ci-dessus est un coût sans contrepartie, parce que tout remonte à une seule racine : le canal se lie à la forme de votre page, et cette forme change à chaque application installée.

Pour cette moitié-là, nous construisons plutôt un petit module d’export. Il se lie à la table et non à la page : un numéro de table, une vue de filtres enregistrée, une liste de colonnes explicite et ordonnée, exécutable à la demande ou depuis la file d’attente des travaux. Rien dedans ne dépend des extensions qui touchent telle ou telle page.

Le prix explique pourquoi ce n’est pas un remplacement : il n’y a pas de retour d’écriture. Rien ne revient dans Business Central. Si l’utilisateur doit modifier la donnée, Modifier dans Excel reste la réponse et n’a pas de substitut. Seule la moitié « restitution en lecture seule » se déplace.

L’écrire soi-même, c’est aussi assumer trois choses que l’action standard masque :

  1. Tous les champs ne peuvent pas devenir une cellule. Notre sélecteur de colonnes restreint la liste aux champs activés, non obsolètes, de classe Normal ou FlowField, et exclut d’office les types BLOB, Media, MediaSet, TableFilter, Binary, OemCode et OemText. Proposez à un utilisateur un champ d’un de ces types et l’export écrit n’importe quoi ou échoue.
  2. Les FlowFields ne se calculent pas tout seuls. Lisez-en un via un RecordRef sans appeler CalcField d’abord et vous exportez une colonne de zéros qui ressemble à de la vraie donnée. C’est le même FlowField que Microsoft vous fait exclure de l’eTag, pour la raison inverse : là-bas il y en a trop, ici pas assez.
  3. Le type de cellule est une décision, pas un défaut. Decimal, Integer et BigInteger entrent en Number, Date et DateTime en Date, Time en Time, tout le reste en Text. Sautez ce mappage et le destinataire reçoit des nombres stockés comme du texte, ce qui est l’origine réelle de la plupart des plaintes « les totaux ne s’additionnent pas dans Excel ».

Et une dernière qui n’apparaît qu’en production : le même code ne peut pas livrer le fichier de la même manière dans les deux contextes. En interactif, il envoie un téléchargement au navigateur. Sous la file d’attente des travaux, il n’y a aucune session cliente, il faut donc écrire vers une destination configurée. Cette bifurcation est toute la différence entre un export planifié et un travail nocturne qui réussit chaque nuit et ne livre rien.

L’approche Asio Services

La plupart des tickets Modifier dans Excel qu’on nous confie ne sont pas des tickets Excel. C’est une page fiche qui a accumulé des champs d’extension jusqu’à ce que les métadonnées cessent de se générer, ou un changement de déploiement que personne n’a relié au symptôme. L’ordre vaut plus que la connaissance : établir si c’est le canal ou la donnée qui est cassé, avant de toucher à une extension. Quand c’est bien la page le problème, le correctif relève du développement Business Central, pas d’un contournement que la prochaine application cassera de nouveau. Si vous préférez qu’on regarde ça avec vous, demandez-nous un diagnostic de clarté.

FAQ

Modifier dans Excel fonctionne-t-il sur Mac ? Le complément Microsoft Dynamics Office Add-in fonctionne uniquement sous Windows. Quand la connexion échoue, le test documenté par Microsoft est d’ouvrir le classeur dans Excel dans un navigateur, mais le complément de bureau lui-même n’existe pas sur macOS.

Pourquoi mes fichiers Excel existants ne s’actualisent-ils plus alors que rien n’a changé ? Votre organisation a probablement basculé entre acquisition individuelle du complément et déploiement centralisé. Chaque fichier porte un identifiant de complément, et la bascule en attribue un nouveau en bloquant l’ancien. Les fichiers s’ouvrent toujours, ils ne peuvent plus s’actualiser ni publier.

Pourquoi l’erreur de métadonnées revient-elle après correction ? Parce que la cause est en général deux extensions qui ajoutent un champ de page du même nom sur la même fiche, et qu’installer une application de plus est une chance de collision de plus. Corriger une collision n’immunise pas la page.

Peut-on modifier plusieurs lignes à la fois de façon fiable ? Oui, une fois que la page publiée exclut les FlowFields non modifiables et les champs hors repeater du calcul de l’eTag. Ce sont deux cases sur la page Services web, masquées par défaut, à régler par page publiée.

Votre Business Central est-il le problème, ou le symptôme ?

On audite ce que vous faites tourner réellement, on nomme ce qui vaut le coup d’être gardé, et on tue le reste. Une conversation suffit en général à savoir dans quel cas vous êtes.

Commence par la clarté