Bonjour,

J'ai installé dans mon Excel un plugin (propriétaire) qui définit de nouvelles formules dans Excel. Dans une case, je peux par exemple taper :
J'obtiendrai le résultat désiré.

Je suis maintenant en train de développer une application qui crée un Excel et cherche à obtenir le résultat de certaines de ces formules.

Je rencontre un souci : les formules ne sont pas instantanées et mon VB.net "rate" certains résultats.

Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
sheet.Range("A1").Formula = "=maFormule()"
libelle = Convert.ToString(sheet.Range("A1").Value())
Ce code va me retourner une chaine vide, alors qu'au bout d'un certain temps =maFormule() va effectivement retourner une valeur (que je vois quand j'affiche mon Excel).

Si je mets un timer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
System.Threading.Thread.Sleep(1000)
le code se met à fonctionner parfaitement mais...
  1. Je ne trouve pas ça très joli
  2. Ce n'est pas très robuste (si une formule met plus de temps à se calculer)
  3. C'est beaucoup plus lent que de continuer dès qu'Excel a fini son traitement


Quelle serait la bonne méthode à adopter ? Puis-je savoir si mon Excel est actuellement en calcul ? Puis-je savoir si une cellule est "rafraichie" ?

Merci pour votre aide.