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

Excel ferme lors du recalcul

6 réponses
Avatar
rmill...
Bonjour,

À la fin d'une macro qui fait passablement de choses j'ai le code application.calculation = xlautomatic.

Mais cette ligne fait fermer Excel abruptement. Je ne trouve vraiment pas ce qui cause ceci.

Par expérience auriez-vous une idée de ce qui pourrait être une cause?

Merci Í  l'avance.

6 réponses

Avatar
MichD
Le 11/11/20 Í  08:54, a écrit :
application.calculation = xlautomatic

Bonjour,
Je peux te rassurer, cette ligne de code n'a jamais fait fermer Excel.
Si tu utilises cette ligne de code, cela sous-entend que l'application
était en mode de calcul manuel.
Est-ce que ta procédure a inséré de nouvelles formules dans une feuille
du classeur? Une manière de vérifier si ta formule s'inscrit
correctement dans une cellule, utilise une nouvelle procédure avec
seulement une ligne de code correspondant Í  celle qui ajoute la formule
dans une cellule. Est-ce que la formule inscrite dans la cellule
correspond Í  celle que tu désires? Est-elle fonctionnelle?
Une autre manière de procéder. Inscris une nouvelle ligne de code dans
ta procédure comme ceci :
Stop
application.calculation = xlautomatic
L'exécution va s'arrêter sur la ligne "Stop", maintenant regarde tes
différentes formules dans la feuille de calcul, as-tu des formules qui
comportent des erreurs ou des expressions textes sans les guillemets
dans ces formules?
À l'aveuglette, je ne peux pas t'en dire beaucoup plus, l'information
donnée est très restreinte.
MichD
Avatar
MichD
En complément, après avoir ajouté la ligne de code Stop et tenté de
visualiser une ou des erreurs possibles dans les formules de la feuille,
complète l'exécution de la macro en utilisant la touche F8" en prenant
soin de placer la curseur après l'expression Stop.
Si le classeur ferme après la dernière ligne de code, c'est que tu as
vraiment un problème de syntaxe dans l'une de tes formules!
MichD
Avatar
rmill...
Merci.
Ok. Oui aussi j'avais mis un stop Í  la ligne application.calculation = xlautomatic ... et ... celle immédiatement en dessous. Donc je sais que ça ferme Í  en exécutant le application.calculation = xlautomatic.
Alors je me doute bien qu'il y a quelque chose de pas OK Í  quelque part.
Mais je me demande ceci. C'est que le fichier est très volumineux et il contient plusieurs feuilles et un très très grand nombre de formules. Auriez-vous un truc pour tenter de cibler la formules qui pourrait causer la situation?
Avatar
MichD
Le 11/11/20 Í  17:32, a écrit :
Merci.
Ok. Oui aussi j'avais mis un stop Í  la ligne application.calculation = xlautomatic ... et ... celle immédiatement en dessous. Donc je sais que ça ferme Í  en exécutant le application.calculation = xlautomatic.
Alors je me doute bien qu'il y a quelque chose de pas OK Í  quelque part.
Mais je me demande ceci. C'est que le fichier est très volumineux et il contient plusieurs feuilles et un très très grand nombre de formules. Auriez-vous un truc pour tenter de cibler la formules qui pourrait causer la situation?

Avant d'exciter la macro, qu'est-ce qui se passe si tu forces une mise Í 
jour d'une feuille.
D'abord pour savoir si c'est ta macro qui modifie une formule qui pose
problème, exécute cette macro ligne par ligne en utilisant la touche F8.
En procédant lentement, si le classeur se ferme suite au calcul de la
feuille, tu vas au moins pouvoir savoir qu'elle est la feuille o͹ une
des formules est problématique. Attention, tu pourrais avoir plus d'une
feuille impliquée.
Si tu exécutes la procédure pas-Í -pas et que tout se passe bien, le
problème se situe au niveau de ta macro. Je peux difficilement t'en dire
plus sans rien voir!
'-----------------------------
Sub test()
Dim Sh As Worksheet
For Each Sh In Worksheets
MsgBox Sh.Name
Sh.Calculate
Next
End Sub
'-----------------------------
Si tu identifies le nom de la feuille qui est responsable de la
fermeture du classeur suite Í  une mise Í  jour des formules, tu peux
utiliser cette macro afin de connaͮtre la colonne o͹ se retrouve cette
formule.
'------------------------------
Sub test2()
Dim Col As Range
'Nom de l'onglet de la feuille Í  adapter...
For Each Col In Worksheets("Feuil1").UsedRange
MsgBox Col.Column
Col.Calculate
Next
End Sub
'------------------------------
L'examen des formules de la colonne se fait manuellement.
MichD
Avatar
rmill...
Merci. Je vais essayer ceci.
Je me rend compte que sur une colonne il y na des formules matricielles et j'applique un filtre sur cette colonne. Serait-ce possible que si un filtre est appliqué et qu'alors je fais un calcul que cela pourrait déclencher la fermeture?
Car j'ai fais Í  plusieurs reprises le pas Í  pas afin de voir o͹ et quand ça ferme ... et ce n'est pas toujours au même endroit.
Avatar
MichD
Le 12/11/20 Í  08:42, a écrit :
Merci. Je vais essayer ceci.
Je me rend compte que sur une colonne il y na des formules matricielles et j'applique un filtre sur cette colonne. Serait-ce possible que si un filtre est appliqué et qu'alors je fais un calcul que cela pourrait déclencher la fermeture?
Car j'ai fais Í  plusieurs reprises le pas Í  pas afin de voir o͹ et quand ça ferme ... et ce n'est pas toujours au même endroit.

Excel ne devrait pas planter sur ce filtre.
Est-ce que ton fichier est sur ton ordinateur ou sur un serveur ou en
ligne? Si oui, place une copie de ton fichier sur ton disque dur.
Observes-tu la même chose?
Il se peut que ton fichier soit corrompu!
Exécute cette macro pour copier toutes les feuilles du classeur vers un
autre classeur.
'-----------------
Sub Copie()
Sheets.copy
End sub
'-----------------
Et pour copier les modules standards, Í  partir de la fenêtre de
l'éditeur de code VBA, Í  tour de rÍ´le, clique sur un module et en
maintenant le bouton de la souris enfoncé, glisse-le vers le nouveau
projet VBA du nouveau classeur.
Il ne te reste plus qu'Í  enregistrer le nouveau fichier sur ton disque dur.
As-tu toujours le même problème?
Il est toujours possible de passer en mode de calcul manuel avant
d'effectuer le filtre et remettre en automatique après le filtre.
Si aucune de ces approches ne fonctionne, le problème provient de
l'application Excel.
MichD