Bloquer le recalcul à l'ouverture

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fredo P.
Le #18097471
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" 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


LSteph
Le #18097461
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


LargoWinch
Le #18099811
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...
LargoWinch
Le #18099801
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.
Fredo P.
Le #18100261
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.


LargoWinch
Le #18100911
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
Publicité
Poster une réponse
Anonyme