Bonjour,

j'utilise Excel.Interop en tâche de fond de mon application pour effectuer divers calculs (ce n'est d'ailleurs pas moi le concepteur du fichier et ne peut faire autrement que d'interagir avec).
Le temps de chargement du template Excel étant incompressible (10s env) je m'assure qu'Excel et son workbook se lancent au plus tôt au chargement de mon application pour permettre de l'interroger régulièrement pour effectuer des calculs.

Je n'ai aucun problème à utiliser Interop avec plusieurs instances ouvertes de mon applicatif, chacun lance bien son propre process Excel, contenant chacun sa propre instance du template Excel (donc les 2 ne se percutent pas, je peux en calculer un sans perturber l'autre, et enfin le meilleur dans tout ça est que le temps de calcul n'évolue pas de façon exponentielle avec le nombre d'instance que l'utilisateur aurait décidé d'ouvrir), chaque PID étant enregistré par chaque instance de mon appli je n'ai aucun mal à fermer le process et le template après utilisation.

La ou ça se gâte c'est quand je lance des fichiers Excel par ailleurs. Si j'ai lancé un fichier Excel seul (peu importe son format), puis je lance des instances de mon application, j'ai bien mes propres Excels en fond "attachés" à la bonne instance d'appli.
A l'inverse si je lance une feuille Excel APRES avoir lancé mes instances d'appli, Excel me pique l'une des instances que j'ai masqué !!! Mon problème est que le template traité doit rester caché et surtout ne doit pas permettre une interaction autre que celle fournie par mon application (ne serais-ce que pour éviter de s'arracher les cheveux avec des erreurs COM liées à des modification manuelles au mauvais moment)

Nous utilisons actuellement Excel 2010, du coup j'ai tenté d'utiliser Excel 2016 (qui par une simple clé registre me donnait espoir : HKCU\Software\Microsoft\Office\16.0\Excel\Options\DisableMergeInstance=1) mais ça n'a pas du tout fonctionné comme attendu, je n'ai pas la même notion d'instance qu'Excel apparemment, certes il place les Excel dans des fenêtres séparées mais me pique quand même un de me process (donc l'affiche) pour y lancer une autre fenêtre, ils se retrouvent tous deux sous le même PID (d'où mon incompréhension de ce qu'ils appellent des instances séparées...)

Si quelqu'un avait une solution pour me permettre de remplir ces conditions : avoir une instance d'Excel masquée qui serait propre à chacune ne mes applications, tout en la protégeant d'une réutilisation par Excel (pour ne pas perturber le fonctionnement habituel)
Ou sinon je suis preneur pour des idées, voir même une remise à plat de mon problème sachant que les contraintes actuelles sont :
- le template est codé par un analyste financier (qui ne fera pas de C#, et qui aura du mal à faire accepter à la direction qu'il doit tout redévelopper de zéro après plusieurs années de travail)
- le template contient du VBA (oui j'ai bien pensé à étudier l'utilisation d'ExcelService, mais il n'accepte pas les fichiers avec macro, ou j'aurais mal lu)
- [contrainte bonus] Ca doit marcher quelque soit la version d'Office ... c'est bonus parce que ce serai un peu demander la lune, mais sur un malentendu on sait jamais !

Merci d'avoir pris le temps de lire, j'espère avoir titillé votre curiosité et que l'un d'entre vous saura me sortir de cette impasse !

Bonne journée !

PS : c'est rare que je demande de l'aide (google suffit généralement), donc la forme n'est peut-être pas très "standard" et il manque peut-être des infos, n'hésitez pas à m'en faire part je corrigerai/compléterai