Bonjour
Dans ma base access 2003, j'utilise un formulaire pour générer un fichier Excel assez lourd (contenant beaucoup de données, de formules, de mise en forme, de feuilles etc. En gros, un fichier de 1 Mo) grâce à du VBA.
Sans optimisation, il fallait 33 secondes à mon dual core pour générer le fichier.
En utilisant exc.Calculation = xlCalculationManual et exc.ScreenUpdating = False je passe à 8 sec pour la génération, ce qui n'est vraiment pas négligeable.
Le problème est qu'exactement une fois sur deux, la ligne
exc.Calculation = xlCalculationManual
me génère une Erreur d'exécution '1004': La méthode 'Calculation' de l'objet '_Application' a échoué. (exc.Calculation = <Incompatibilité de type>)
J'ai effectué pas mal de recherches, et j'ai essayé les méthodes suivantes:
- Créer le workbook avant
- Sélectionner un Range avant
Mais rien n'a faire, une fois sur deux l'erreur reviens. J'ai aussi remarqué qu'après la génération de mon fichier, dans les processus, EXCEL était toujours présent.
Ici les principales lignes de mon code (début / fin ):
En rajoutant Application.Close, cela me ferme Access :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Private Sub CreerFichierContraintes_Click() Dim exc As New Excel.Application Set exc = CreateObject("Excel.Application") Workbooks.Add 'rajoute trois feuilles exc.ScreenUpdating = False 'On Error Resume Next Range("A1").Select exc.Calculation = xlCalculationManual '--> Erreur 1004 une fois sur deux. 'Manipulations sur le fichier ... '800 lignes plus tard: exc.Calculation = xlCalculationAutomatic exc.ScreenUpdating = True ActiveWorkbook.SaveAs Filename:=file, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False ActiveWorkbook.Close exc.Quit End Sub
Comment: éviter d'avoir des processus Excel qui s'accumulent, et comment éviter cette erreur une fois sur deux?
Merci beaucoup d'avance
Partager