S'assurer que les calculs sont terminé

johnmjs

XLDnaute Nouveau
Bonjour à tous,

J'ai un petit souci, j'ai fait une macro traitant un fichier comportant de nombreuses lignes. Dans cette macro j'ai fait une procédure qui déploie des formules excel.

Bref je déploie avec l'autofill, mais dans la suite de ma macro j'utilise une autre procédure qui modifie les données utilisées dans ma premiere procédure => les résultats ne sont plus les même ce qui est plutôt normal... Du coup j'ai créé une autre procédure pour remplacer les formules par les valeurs.

Seulement j'ai l'impression que Excel n'a pas le temps de faire tous les calculs... Enfin c'est même sur, j'ai observé les résultats avt/après.

Du coup ma question comment s'assurer que tous les calculs sont terminés avant de passer à une autre procédure?

Grosso modo mon main :

Sub main()
procedureFormule
procedureRemplaceValeurs
procedureGamma
End Sub
 

johnmjs

XLDnaute Nouveau
Re : S'assurer que les calculs sont terminé

Je précise : à cause du grand nombre de lignes dans mon fichier Excel n'a pas le temps de finir les calcul, du coup les valeurs obtenues (je ne garde que les valeurs) sont erronées.

Il semble que ce que je cherche existe sous Excel 2007, il s'agit de Application.AfterCalculate
L'événement AfterCalculate se produit une fois que l'activité d'actualisation en attente (synchrone et asynchrone) est totalement terminée, ainsi que toutes les actions de calcul qui en découlent.
Malheureusement je suis sous Excel 2003...
Je pourrai éventuellement faire un Wait, mais je trouve ça assez "crade", en plus je ne sais pas réellement combien de temps vont prendre les calculs...
Ou alors peut etre en faisant une boucle avec un Range("A"&indice).Calculate, il faut que je teste ça

Sinon je pensais carrement faire des tests (If Then...)au lieu d'utiliser les formules d'Excel et ainsi avoir directement les valeurs, seulement je me demande si cela ne prendrai plus de temps ?

Voila si vous avez des solutions/conseils je suis preneur !
 

Gorfael

XLDnaute Barbatruc
Re : S'assurer que les calculs sont terminé

Salut johnmjs et le forum
SheetCalculate, événement

Cet événement se produit après le recalcul de toute feuille de calcul ou après le traçage des données modifiées sur un graphique.
Private Sub object_SheetCalculate(ByVal Sh As Object)
object Application ou Workbook. Pour plus d'informations sur l'utilisation d'événements avec l'objet Application, consultez Utilisation d'événements avec l'objet Application.
Sh La feuille. Il peut s'agir d'un objet Chart ou Worksheet.
Macro à lancement automatique du module ThisWorkBook
A+
 

Discussions similaires

Réponses
9
Affichages
675

Statistiques des forums

Discussions
312 843
Messages
2 092 753
Membres
105 521
dernier inscrit
Chercheur d'excel