Re : Excel perd les pédales
ltsv38 à dit:
Bonjour Gorfael et merci pour ta réponse.
Mon classeur est déjà utilisé avec un calcul sur demande pour éviter les temps de réponses liès à des recalculs permanents : à l'ouverture j'appelle le code suivant :
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
Et dans mes boîtes de dialogue j'appelle un "Calculate" lorsque il le faut.
Les erreurs sont toujours dans la même feuille.
J'ai retenu par contre la méthode suivante dans ta réponse :
Sheets("feuille à recalculer 1").Range("Plage à recalculer 1").Calculate
Je me demande cependant si, pour ne pas avoir à spécifier une à une toutes les plages à calculer je peux faire (après une longue cogitation sur le "bon" ordre) :
Sheets("feuille principale").Range("Plage à recalculer 1").Calculate
Sheets("feuille principale").Range("Plage à recalculer 2").Calculate
....
Sheets("feuille principale").Range("Plage à recalculer N").Calculate
Calculate
Ce dernier "Calculate" étant destiner à tout recalculer sur la feuille principale comme sur tout le reste du classeur : en espérant que, même s'il recalcule ce qui a déjà été imposé au préalable il n'y aura pas d'erreurs puisque les paramètres n'ont pas changés entre ces 2 calculs !
A tester et à suivre...
Pierre
Re...
With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
peut être remplacé par :
Application.Calculation = xlManual
Le reste est une re-définition d'Excel qui ne sait pas si tu as changé les valeur ou pas
Sheets("feuille principale").Range("Plage à recalculer 1").Calculate
Sheets("feuille principale").Range("Plage à recalculer 2").Calculate
....
Sheets("feuille principale").Range("Plage à recalculer n").Calculate
soit tu actives la feuille
Sheets("feuille principale").activate
Range("Plage à recalculer 1").Calculate
Range("Plage à recalculer 2").Calculate
....
Range("Plage à recalculer n").Calculate
soit tu utilises With
with Sheets("feuille principale")
.Range("Plage à recalculer 1").Calculate
.Range("Plage à recalculer 2").Calculate
....
.Range("Plage à recalculer n").Calculate
end with
Avec une indentation, c'est plus lisible
Pense à faire un ScreenUpDating=False en début et =True en fin de macro
A+