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 :
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 :
System.Threading.Thread.Sleep(1000)
le code se met à fonctionner parfaitement mais...
- Je ne trouve pas ça très joli
- Ce n'est pas très robuste (si une formule met plus de temps à se calculer)
- 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.
Partager