Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bloquer le recalcul à l'ouverture

6 réponses
Avatar
LargoWinch
Bonjour,

sous Excel 2003, j'ai un fichier Excel de reporting bourré de formules
SOMMEPROD, sur des données contenues dans un autre classeur (issu d'une
extraction d'un progiciel, au format csv).

Le SOMMEPROD ne fonctionnant pas sur des fichiers non-ouverts sous
excel, j'ouvre donc automatiquement le fichier de données via une macro
auto-open, après avoir mis le Recalculate à faux.
Malgré ça, l'ouverture du fichier de reporting prends des plombes, le
pourcentage d'avancement de recalcul monte trèèèès lentement. Je ne peux
pas stopper le calcul évidemment.
Si le fichier de données n'existe plus, je ne récupére pas la main, même
après plusieurs dizaines de minutes.

J'ai essayé de forcer, au niveau des options Excel, le calcul en manuel,
sans plus de succès. Faut-il jouer sur les autres options ?

Existe-t-il un moyen d'empêcher ce recalcul au démarrage, pour ne le
faire qu'une fois que le fichier de données est ouvert ?

Merci

6 réponses

Avatar
Fredo P.
2 petites macros que l'on devrait appler au début et la fin de chaque macro
importante et qui accélèrent les calculs.
Public Sub EnaF()
Application.EnableEvents = False 'Doit absolument être remis à True sous
peine de ne plus voir _
'ses onglets.Mais ce n'est pas irréversible)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
End Sub
Public Sub EnaT()
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
"LargoWinch" a écrit dans le message de
news:ghm4nc$gf5$
Bonjour,

sous Excel 2003, j'ai un fichier Excel de reporting bourré de formules
SOMMEPROD, sur des données contenues dans un autre classeur (issu d'une
extraction d'un progiciel, au format csv).

Le SOMMEPROD ne fonctionnant pas sur des fichiers non-ouverts sous
excel, j'ouvre donc automatiquement le fichier de données via une macro
auto-open, après avoir mis le Recalculate à faux.
Malgré ça, l'ouverture du fichier de reporting prends des plombes, le
pourcentage d'avancement de recalcul monte trèèèès lentement. Je ne peux
pas stopper le calcul évidemment.
Si le fichier de données n'existe plus, je ne récupére pas la main, même
après plusieurs dizaines de minutes.

J'ai essayé de forcer, au niveau des options Excel, le calcul en manuel,
sans plus de succès. Faut-il jouer sur les autres options ?

Existe-t-il un moyen d'empêcher ce recalcul au démarrage, pour ne le
faire qu'une fois que le fichier de données est ouvert ?

Merci


Avatar
LSteph
Bonjour,

Pas d'accord du tout!

> Le SOMMEPROD ne fonctionnant pas sur des fichiers non-ouverts

S'agissant d'un fichier excel le sommeprod fonctionne parfaitement c'est
le somme.si qui peut buguer lorsque le fichier est fermé.

s'agissant d'un csv c'est une autre histoire....

@+

--
lSteph



LargoWinch a écrit :
Bonjour,

sous Excel 2003, j'ai un fichier Excel de reporting bourré de formules
SOMMEPROD, sur des données contenues dans un autre classeur (issu d'une
extraction d'un progiciel, au format csv).

Le SOMMEPROD ne fonctionnant pas sur des fichiers non-ouverts sous
excel, j'ouvre donc automatiquement le fichier de données via une macro
auto-open, après avoir mis le Recalculate à faux.
Malgré ça, l'ouverture du fichier de reporting prends des plombes, le
pourcentage d'avancement de recalcul monte trèèèès lentement. Je ne peux
pas stopper le calcul évidemment.
Si le fichier de données n'existe plus, je ne récupére pas la main, même
après plusieurs dizaines de minutes.

J'ai essayé de forcer, au niveau des options Excel, le calcul en manuel,
sans plus de succès. Faut-il jouer sur les autres options ?

Existe-t-il un moyen d'empêcher ce recalcul au démarrage, pour ne le
faire qu'une fois que le fichier de données est ouvert ?

Merci


Avatar
LargoWinch
LSteph a écrit :
Bonjour,

Pas d'accord du tout!

> Le SOMMEPROD ne fonctionnant pas sur des fichiers non-ouverts

S'agissant d'un fichier excel le sommeprod fonctionne parfaitement c'est
le somme.si qui peut buguer lorsque le fichier est fermé.

s'agissant d'un csv c'est une autre histoire....

@+

--
lSteph



Je dois confondre avec INDIRECT alors, mais, quoiqu'il en soit, si mes
fichiers de données sont fermés (un csv nommé xls), je n'ai au mieux que
des #REF!, au pire un Calcul qui bloque à 0% pendant de trop longues
minutes.
Peut-etre parce que tout ca est stocké sur des disques réseaux...
Avatar
LargoWinch
Fredo P. a écrit :
2 petites macros que l'on devrait appler au début et la fin de chaque macro
importante et qui accélèrent les calculs.
Public Sub EnaF()
Application.EnableEvents = False 'Doit absolument être remis à True sous
peine de ne plus voir _
'ses onglets.Mais ce n'est pas irréversible)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
End Sub
Public Sub EnaT()
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub




Le "Application.EnableEvents = False" semble faire beaucoup de bien.

Merci.
Avatar
Fredo P.
Oui mais petite attention. Si une erreur se produit au cours d'une procédure
attribuée de cette commande, la procédure saute toutes les lignes restantes
jusque End sub, prendre la précaution d'avoir quelques lignes de gestion
d'erreur telle
'en début de procédure
On Error Goto Gest
' et en fin de procédure avoir
Gest:
Application.EnableEvents = True
End Sub
> Application.EnableEvents = False 'Doit absolument être remis à True


sous
> peine de ne plus voir _
> 'ses onglets.Mais ce n'est pas irréversible)
Le "Application.EnableEvents = False" semble faire beaucoup de bien.

Merci.


Avatar
LargoWinch
Fredo P. a écrit :
Oui mais petite attention. Si une erreur se produit au cours d'une procédure
attribuée de cette commande, la procédure saute toutes les lignes restantes
jusque End sub, prendre la précaution d'avoir quelques lignes de gestion
d'erreur telle
'en début de procédure
On Error Goto Gest
' et en fin de procédure avoir
Gest:
Application.EnableEvents = True
End Sub



J'en prends bonne note. Merci